如何匹配python中第一次出现单词后的部分

时间:2017-10-13 05:49:21

标签: python regex

例如,输入字符串:

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”可能不是该行的第一个单词。

2 个答案:

答案 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)

Demo 1 Demo 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'