正则表达式只捕获第一场比赛

时间:2014-09-01 09:34:13

标签: regex regex-lookarounds lookaround

我一直在谷歌搜索并查看堆栈溢出提供的推荐问题。但是,我没有找到答案。

我想使用正则表达式解析字符串,字符串的示例是

Lot: He said: Thou shalt not pass!

我想将Lot作为一个群体和He said: Thou shalt not pass!进行捕捉。但是,当我使用(.+): (.+)模式时,它会返回

Lot: He said:Thou shalt not pass!

是否可以使用正则表达式捕获He said: Thou shalt not pass

5 个答案:

答案 0 :(得分:19)

第一组你需要一个非贪婪(或懒惰)的基数:(.+?): (.+)

关于http://www.regular-expressions.info/repeat.html的更多细节,“懒惰而非贪婪”​​一章。

答案 1 :(得分:4)

尝试一下:

([^:]+):\s*(.*)

答案 2 :(得分:2)

(?=.*?:.*?:)(.*?):(.*)

你可以使用它。

参见演示。

http://regex101.com/r/rX0dM7/9

答案 3 :(得分:1)

以下内容有效。

([^:]+): (.+)

答案 4 :(得分:1)

你应该使用标志ig - i =不区分大小写,g =在第一次匹配后不返回,并且表达式如“(。 :)?(。:。*)”。< / p>

你可以在这里看到例子 https://regex101.com/r/SXjg1b/1