简体   繁体   English

正则表达式捕获一个单词以外的所有内容(一个单词而不是一个字符)

[英]regex capture everything except a word (break at a word not character)

Inputs 输入项

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

RegEx 正则表达式

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

How can I make it break at or ? 如何使其在or时断裂? It will break at o I know. 这将打破在o我知道。 And [^(or)] and [^\\(or\\)] won't work either. 并且[^(or)][^\\(or\\)]也不起作用。

It seems like you want split string by or . 似乎您想用or分割字符串。 Use re.split : 使用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']

这应该为您工作:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM