正则表达式捕获除了单词之外的所有内容(单词不是字符)

时间:2013-12-30 16:35:50

标签: python regex

输入

a = "Miami, FL"
b = "Boston, MA or Miami, FL"
c = "United Kingdom"

正则表达式

loc = re.compile('([^or]+)[,]*[\s]*([A-Z]+)')
locs = loc.findall(b)

如何在or打破它?它会在我知道的o处突破。而[^(or)][^\(or\)]也不起作用。

2 个答案:

答案 0 :(得分:3)

好像你想要or分割字符串。使用re.split

>>> b = "Boston, MA or Miami, FL"
>>> re.split(r'\bor\b', b)
['Boston, MA ', ' Miami, FL']

>>> re.findall(r'(?:^|or)\s*([^,]+,?\s[a-z]+)', a, flags=re.I)
['Miami, FL']
>>> re.findall(r'(?:^|or)\s*([^,]+,?\s[a-z]+)', b, flags=re.I)
['Boston, MA', 'Miami, FL']
>>> re.findall(r'(?:^|or)\s*([^,]+,?\s[a-z]+)', c, flags=re.I)
['United Kingdom']

答案 1 :(得分:1)

这应该适合你:

loc = re.compile('(?:^|or)\s*([^,]+),\s([A-Z]+)')