Python使用regex对相似模式进行分组
我想将Python使用regex对相似模式进行分组,python,regex,string,Python,Regex,String,我想将或与我获得的字符串匹配,并根据或发生的时间对结果进行分组 我的输入如下: a or b*~c or 27*y or 5*~b 因此,我的输出应该是: a, b*~c, 27*y, 5*~b 如果正好有3个或,则我的代码有效,否则返回[] 我是python新手,我不太清楚模式必须如何分配给编译函数 import re input = raw_input(" ") ans = re.compile(r'(.*) or (.*) or (.*) or (.*)') print re.fin
或
与我获得的字符串匹配,并根据或
发生的时间对结果进行分组
我的输入如下:
a or b*~c or 27*y or 5*~b
因此,我的输出应该是:
a, b*~c, 27*y, 5*~b
如果正好有3个或
,则我的代码有效,否则返回[]
我是python新手,我不太清楚模式必须如何分配给编译函数
import re
input = raw_input(" ")
ans = re.compile(r'(.*) or (.*) or (.*) or (.*)')
print re.findall(ans, input)
只需根据子字符串
或
re.split(r' or ', s)
或
您可以执行简单的拆分
,而无需使用re
input = raw_input()
ans = input.split("or")
或
如果要使用findall
,可以使用
x="a or b*~c or 27*y or 5*~b"
print re.findall(r"(?:^|(?<=\bor\b))\s*(.*?)\s*(?=\bor\b|$)",x)
输出:[['a']、['b'、'~c']、['27'、['y']、['5'、'~b']]
只需使用str.split('or')拆分字符串即可re.split
预计速度会较慢,区别在于:第一个返回['foo',bar']
,第二个返回['foo',bar']
(表示字符串是foobar
)。@vks我如何同时拆分'or'和'*'?基本上是将它们简化为列表列表。我的答案应该是[[a],[b,~c],[27,y],[5,~b]]
谢谢
ans = input.split(" or ")
x="a or b*~c or 27*y or 5*~b"
print re.findall(r"(?:^|(?<=\bor\b))\s*(.*?)\s*(?=\bor\b|$)",x)
x="a or b*~c or 27*y or 5*~b"
print [i.split("*") for i in x.split(" or ")]