2010-05-21 49 views
0

...美孚,酒吧,維布勒A,B,C2,N,J,巴茲,Qux,更大,更.. 。匹配 「維布勒A,B,C2,d」 使用PERL正則表達式

...酒吧,Qux,維布勒d,E,J,N6,O,富,富,更多,更多......等等

如何突出匹配這些字符串的一部分使用PERL兼容的正則表達式?

它以單詞「Wibble」開頭,並以一個或兩個由逗號分隔的字符組件繼續,直到下一個單詞。

+0

你將需要弄清楚到底是什麼決定了你要匹配的字符串的一部分。 – Amber 2010-05-21 01:52:21

+0

逗號也是一個字符。你可能需要'大寫字符或數字'。 – muhmuhten 2010-05-21 02:00:24

回答

2

從我可以告訴,這可能會爲你工作:

/Wibble([A-Z]\d?,)*/ 
+1

這實際上並沒有捕獲除最後一個'([A-Z] \ d?,)*'匹配的任何東西,這通常是無用的。 (這就像是'J',' – muhmuhten 2010-05-21 02:02:54

+0

@sreservoir爲了替換目的,這個很不錯。謝謝你的提示,琥珀! – sanmai 2010-05-21 02:05:01

0

不是不惜一切嚴肅的回答:/(Wibble A, B, C2, N, J,)/

+0

「Wibble」後面可以有任何內容,但不能超過兩個字符和大寫字母。 – sanmai 2010-05-21 01:51:48

1

/Wibble((?:\s+[A-Z0-9]{1,2},)*)/

檢查$1

當然,當你說大寫,然後在你的例子中有數字,一些例外必須作出。

1

我會嘗試:

/(Wibble(?:\s[A-Z0-9]{1,2},)+)/ 
+0

這個也沒有實際上捕捉他似乎想要的東西。 – muhmuhten 2010-05-21 02:03:29