所以我的字符串看起来像这样:
Basic information, advanced information, super information, no information
我想捕捉到第二个逗号的所有内容,所以我得到:
Basic information, advanced information
那么这个正则表达式是什么呢?我试过:(.*,.*),,但我得到
(.*,.*),
Basic information, advanced information, super information,
gxwragnw1#
这将捕获直到但不包括第二个逗号:
[^,]*,[^,]*
英语翻译:
[^,]*
,
[...]是一个字符类。[abc]表示“a或B或c”,[^abc]表示除a或b或c之外的任何东西。
[...]
[abc]
[^abc]
tv6aics12#
您可以尝试^(.*?,.*?),问题是.*是贪婪的,并且匹配最大数量的字符。?behind * 将行为改变为非贪婪。你也可以在每一个的周围加上括号。* ?段来单独捕获字符串。
^(.*?,.*?),
.*
nfzehxib3#
我会采取一种DRY方法,就像这样:
^([^,]*,){1}[^,]*
通过这种方式,您可以匹配所有内容,直到字符出现***n***次,而无需重复,除了最后一个模式。虽然在原海报的情况下,组和重复的组是无用的我认为这将有助于其他需要匹配2倍以上的模式。说明:
**([^,],)**创建一个组,匹配除逗号字符以外的所有字符,直到它遇到逗号。*{1}统计上一个模式(需要的次数)-1。所以如果你需要2,就等于1,如果你需要20,就等于19。***[^,]***最后一次重复该模式,不加逗号。
egmofgnx4#
试试这个方法:
(.*?,.*?),.*
Link to the solution
4条答案
按热度按时间gxwragnw1#
这将捕获直到但不包括第二个逗号:
英语翻译:
[^,]*
=尽可能多的非逗号字符,
=逗号[^,]*
=尽可能多的非逗号字符[...]
是一个字符类。[abc]
表示“a或B或c”,[^abc]
表示除a或b或c之外的任何东西。tv6aics12#
您可以尝试
^(.*?,.*?),
问题是.*
是贪婪的,并且匹配最大数量的字符。?behind * 将行为改变为非贪婪。你也可以在每一个的周围加上括号。* ?段来单独捕获字符串。
nfzehxib3#
我会采取一种DRY方法,就像这样:
通过这种方式,您可以匹配所有内容,直到字符出现***n***次,而无需重复,除了最后一个模式。
虽然在原海报的情况下,组和重复的组是无用的我认为这将有助于其他需要匹配2倍以上的模式。
说明:
**([^,],)**创建一个组,匹配除逗号字符以外的所有字符,直到它遇到逗号。
*{1}统计上一个模式(需要的次数)-1。所以如果你需要2,就等于1,如果你需要20,就等于19。
***[^,]***最后一次重复该模式,不加逗号。
egmofgnx4#
试试这个方法:
Link to the solution