例如,输入字符串:
In North Dighton, there's a Flash Flood Watch in effect until Wednesday, July 12, 9:00 PM.
我想提取以下字符串
North Dighton
所以我写这样的python代码:
found_group = re.search('(.*)in (.*?),(.*)', "In North Dighton, there's a Flash Flood Watch in effect until Wednesday, July 12, 9:00 PM.", re.IGNORECASE)
fround_group.group(2)
然而它输出:
effect until Wednesday
如何才能匹配第一个“in”和第一个逗号之间的部分?
注意,第一个“in”可能不是该行的第一个单词。
答案 0 :(得分:1)
你必须使用否定的字符类来匹配,
但不匹配任何字符。因为你的正则表达式中的.*
是贪婪的,在找到匹配项之前会吃掉任何字符,或者使.*
非贪婪,如.*?
found_group = re.search('([^,]*)in ([^,]*),(.*)', "In North Dighton, there's a Flash Flood Watch in effect until Wednesday, July 12, 9:00 PM.", re.IGNORECASE)
fround_group.group(2)
答案 1 :(得分:0)
t =“在North Dighton,有一个Flash Flood Watch生效,直到7月12日星期三晚上9点”
import re
re.search(r'In (.+?),', t).group(1)
O / P
'North Dighton'