Python Regex matcher, пока два символа не станут похожими на условие ИЛИ

Мой вопрос довольно прост, я пытаюсь придумать RE, чтобы выбрать любой набор слов или утверждений между двумя символами.
Например, строки выглядят примерно так:

') as whatever ' 

и это также может выглядеть

') as whatever\r\n'

Поэтому мне нужно извлечь "что угодно" из этой строки.

Regex, который я придумал, это:

\)\sas\s(.*?)\s

Он работает нормально и извлекает "что угодно", но это будет работать только для первого примера, а не для второго. Что мне делать в случае второго утверждения

Я в основном ищу условия ИЛИ!

Любая помощь будет оценена

заранее спасибо

2 ответа

Решение

Вопрос не очень понятен, но, возможно, искомый синтаксис регулярного выражения может выглядеть примерно так:

\)\sas\s(.*?)[\s | \r | \n]

в основном, говоря после интересующей строки, вы можете найти пробел или другие символы.

РЕДАКТИРОВАТЬ В качестве примера возьмите следующий код в Python2. Оператор ИЛИ '|' и я использовал его в квадратных скобках, чтобы поймать строки, которые в качестве последующего символа имеют пробел '\r' a . или "д".

import re
a = ') as whatever '
b = ') as whatever\r\n'
c = ') as whatever.'
d = ') as whateverd'
a_res =  re.findall(r'\)\sas\s(.*?)[\s | \r | \n]', a)[0] #ending with     space, \r or new line char
b_res =  re.findall(r'\)\sas\s(.*?)[\s | \r | \n]', b)[0]
c_res =  re.findall(r'\)\sas\s(.*?)[\s | \r | \on | \.]', c)[0] #ending with space, \r new line char or .
d_res =  re.findall(r'\)\sas\s(.*?)[\s | \r | \on | \. | d]', d)[0] #ending with space, \r, new line char, . or d
print(a_res, len(a_res))
print(b_res, len(b_res))
print(c_res, len(c_res))
print(d_res, len(d_res))

Это работает, как вы и планировали. Пожалуйста, проверь это

import re
a =') as whatever '
b=') as whatever\r\n'
print re.findall(r'\)\sas\s(.*?)\s', a)[0]
print re.findall(r'\)\sas\s(.*?)\s', b)[0]

Это будет выводить как

'whatever'
'whatever'
Другие вопросы по тегам