-2

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

') as whatever ' 

它也可以看起来像

') as whatever\r\n'

所以我需要从这个字符串中提取“whatever” 。

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

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

它可以正常工作并提取“任何内容”,但这仅适用于第一个示例而不是第二个示例。在第二个语句的情况下我该怎么办

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

任何帮助,将不胜感激

提前致谢

4

2 回答 2

1

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

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'
于 2018-02-21T09:57:30.737 回答
1

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

\)\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))
于 2018-02-21T10:05:20.920 回答