2010-12-03 68 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

相關問題