2011-04-05 97 views
0

我有一個字符串,它看起來像:有條件的正則表達式

this is a string [[and]] it is [[awesome|amazing]] 

我有以下的正則表達式到目前爲止:

(?<mygroup>(?<=\[\[).+?(?=\]\])) 

我基本上是試圖捕捉括號內的一切。但是,我需要添加另一個條件:如果匹配的結果包含管道分隔符,則只將該單詞返回到管道分隔符的右側。如果沒有管道,則只需返回括號內的所有內容。

我找給出的示例中的解析結果,上面應該是這樣的:

和 驚人

任何輸入讚賞。

+0

可能重複的[AS3 RegExp question](http://stackoverflow.com/questions/5443149/as3-regexp-question) – Kobi 2011-04-05 22:06:24

+0

將(。* |)?(。*)做詭計嗎?第一組或者是東西直到管道,或者什麼都不是。第二組是你正在尋找的... – 2011-04-05 22:07:34

回答

2
(?<mygroup>(?<=\[\[)([^|\]]*|)?([^|]+?)(?=\]\])) 
0

regex信息頁面:

的巨大力量和現代的正則表達式的表現力 可以 勾引輕信 - 或者魯莽 - 到試圖在每一個 與字符串使用正則表達式他們遇到的相關任務。

我的建議:只要抓住括號中的內容並解析它。

正則表達式不是一切的答案。願那些追隨你的人避免破譯你所提出的正則表達式。

1

你可以使用這個表達式:

(?<=\[\[[^\]]*?)(?!\w+\|)\w+(?=\]\]) 

它在您的測試例子都andamazing詞相匹配。你可以查看它,我在Ideone上創建了一個測試應用程序。