Python 正则表达式匹配器直到两个字符像 OR 条件

Python Regex matcher until two characters like a OR condition

我的问题很简单 我试图想出一个 RE 来 select 两个字符之间的任何一组单词或语句。
例如,字符串是这样的:

') as whatever ' 

它也可以看起来像

') as whatever\r\n'

所以我需要从这个字符串中提取 'whatever'

我想到的正则表达式是这样的:

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

它工作正常并提取 'whatever' 但这 仅适用于第一个示例而不适用于第二个 。如果是第二个语句我应该怎么做

我基本上是在寻找 OR 条件之类的东西!

任何帮助将不胜感激

提前致谢

它正在按您的预期运行。请查收

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'

问题不是很清楚,但也许你正在寻找的正则表达式语法可能是这样的:

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

基本上告诉你感兴趣的字符串后你可以找到一个space或其他字符。

编辑 例如,在 Python2 中使用以下代码。 OR 运算符是“|”我在方括号中使用它来捕获具有后续字符 a space, '\r' a 的字符串。或 'd'.

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))