2016-06-08 41 views
0

我是一個正則表達式新手,我無法弄清楚如何匹配以下:正則表達式支架和支架旁邊的海誓山盟

字符串例如:

「這是我的字符串[東西:東西]而字符串非常漂亮[something:something] [a] [b] [c]。「

此刻我得到了一個匹配所有開始和結束方括號的正則表達式。 \[([^]]*)\]

這產生以下

  • [東西:東西]
  • [東西:東西]
  • 並[a]
  • 並[b]
  • 並[c]

我想將獨立括號和括號旁邊的括號分組。

正則表達式應該像它一樣分組;

  • [東西:東西]
  • [東西:東西] [A] [B] [C]

任何人能幫助我們嗎?

+0

特殊的正則表達式字符,如果你想找到那些字符反斜槓。 '[ac] *'會找到'abc',但'\ [ac \]'會找到'[ac]' – LukStorms

+1

要分組,您可以使用[groups](http://stackoverflow.com/questions/3512471/what- (?:\ [[^ \]] * \])+' –

+1

如果您需要方括號中的內容,請使用'(?:\ [([ ]] *)])+'並訪問CaptureCollection。 –

回答

2

你可以這樣做:

((?:\[[^]]*\])+) 
  • 非捕獲組(?:\[[^]]*\])比賽[,則任何數量高達]字符,然後]

  • 拍攝的組((?:\[[^]]*\])+)匹配一個或多個發生未捕獲組

Demo

+0

不錯。如果它有一個跟隨[和那樣的事情],我正在考慮做前瞻性不匹配結束]。這比我的想法要簡單得多。 :) – Chris