提问者:小点点

正则表达式仅捕获第一个匹配项 [重复]


我想用正则表达式解析一个字符串,字符串的例子是

罗得:他说:你不能通过

我想将Lot作为一个组捕获,并且他说:你不应该通过!。然而,当我使用我的(. ): (. )模式时,它返回

Lot:他说:你不应该通过!

他说:你不应该使用正则表达式传递吗?


共3个答案

匿名用户

第一组需要一个非贪婪(或懒惰)的基数:< code >(。?): (.)。

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

匿名用户

试试这个:

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

匿名用户

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

你可以用这个。

请参见演示。

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