2010-12-03 77 views
9

所以我的字符串如下所示:如何匹配一切,直到第二次出现的角色?

Basic information, advanced information, super information, no information 

我想捕捉一切都交给第二个逗号,所以我得到:

基本信息,先进的信息

什么是对的正则表达式?

我想:(.*,.*),但我得到

基本信息,先进的信息,超级信息,

+0

直至包括或最多但不包括? – 2010-12-03 21:23:43

回答

13

这将捕获最多,但不包括第二个逗号:

[^,]*,[^,]* 

英语翻译:

  • [^,]* =许多非逗号字符可能

  • , =逗号

  • [^,]* =许多非逗号字符尽可能

[...]是一个字符类。 [abc]的意思是“a或b或c”,并且[^abc]意味着除a或b或c之外的任何东西。

3

你可以尝试^(.*?,.*?), 的问题是,.*是贪婪和匹配字符的最大数量。这个? *后面的行为改变为非贪婪。

你也可以把括号放在每个。*?段来分别捕获字符串,如果你想。

+0

几乎作品,让我知道:基本信息,高级信息,(逗号结尾) – Micor 2010-12-03 21:29:04

+1

这也匹配第二个逗号。从这个问题是否确定还不清楚 - 他说他想要“基本信息,先进信息”,但也许他的意思是捕获组捕获,而不是整个正则表达式捕获。 – 2010-12-03 21:31:10

相关问题