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

Python正则表达式匹配器,直到两个字符,如OR条件,python,regex,regex-greedy,sql-parser,Python,Regex,Regex Greedy,Sql Parser,我的问题很简单 我想用RE来选择两个字符之间的任何一组单词或语句 例如,字符串如下所示: ') as whatever ' 它也可以看起来像 ') as whatever\r\n' 所以我需要从这个字符串中提取'whatever' 我想出的正则表达式是: \)\sas\s(.*?)\s 它可以很好地提取'whatever',但这只适用于第一个示例,而不适用于第二个示例。如果出现第二种情况,我该怎么办 我基本上是在寻找一种或状况之类的东西 任何帮助都将不胜感激 提前感谢它正在按您的预期工作

我的问题很简单 我想用RE来选择两个字符之间的任何一组单词或语句
例如,字符串如下所示:

') as whatever ' 
它也可以看起来像

') as whatever\r\n'
所以我需要从这个字符串中提取'whatever'

我想出的正则表达式是:

\)\sas\s(.*?)\s
它可以很好地提取'whatever',但这只适用于第一个示例,而不适用于第二个示例。如果出现第二种情况,我该怎么办

我基本上是在寻找一种状况之类的东西

任何帮助都将不胜感激


提前感谢

它正在按您的预期工作。请检查一下

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]
基本上,在你感兴趣的字符串之后,你可以找到一个空格或其他字符

编辑 以Python2中的以下代码为例。OR运算符是“|”,我在方括号中使用它来捕捉字符串,这些字符串后面有一个空格“\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))

您是否尝试过使用
\s+
而不是
\s
?然后它会匹配一个或多个空白字符(这是
\r\n
所需的字符)。它似乎可以工作,请参阅<代码>\s也与
\r
匹配(regex101行结尾没有
\r
)。我用一个例子更新了这个问题。它在python2中工作。如果不起作用,请复制错误。