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