Reputation: 1255
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
? It will break at o
I know. And [^(or)]
and [^\(or\)]
won't work either.
Upvotes: 1
Views: 94
Reputation: 369324
It seems like you want split string by or
. Use 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']
Upvotes: 3
Reputation: 39395
This should work for you:
loc = re.compile('(?:^|or)\s*([^,]+),\s([A-Z]+)')
Upvotes: 1