2012-04-25 34 views
0

我有一個文本,其變量如[abcderere]
爲了檢測這些變量,我決定創建以下正則表達式:一個正則表達式來檢測像「[blablablabla]」

(\[.+?\]) 

它的工作與像[azerty][qwerty]字符串,但我希望我的正則表達式也檢測字符串如[[azerty],因爲它的模式匹配,但它不」將不起作用

+0

你的正則表達式似乎匹配像「[[azerty]」這樣的字符串。測試它在這裏:http://www.regexplanet.com/advanced/java/index.html和Java本身。你在使用Pattern.compile(「(\\ [。+?\\])」); ? – 2012-04-25 08:40:37

+5

*「我的問題很簡單」*「生命的意義是什麼?」也是一個簡單的問題,這是棘手的答案。問題的簡單性與答案的簡單性無關。 ;) – 2012-04-25 08:40:52

+0

它究竟以什麼方式「不起作用」?它會匹配,因爲'[[azerty]''包含''[azerty]''。 – ArjunShankar 2012-04-25 08:43:59

回答

1

或許這將幫助:

(\[[^\[\]]+\]) 
^ ^^ ^^^ 
| ||  | || 
| |+-----+ || 
| +---------+| 
+------------+ 

給定一個字符串,如[[azerty],它會跳過第一個括號搭配[azerty]。對於字符串[[azerty][foobar]]它將匹配[azerty][foobar]Demo here

+0

,對於您認爲它會起作用的情況[[foobar]]? – 2012-04-25 09:12:06

+0

那麼對於'[[foobar]]'你想讓它同時返回'[foobar]'和'foobar'嗎? – Jack 2012-04-25 09:14:18

+0

是的,這正是我想要的;)編輯:對於前面的例子[[azerty] [foobar]]它給了我[azerty](好),但[[foobar]:/ – 2012-04-25 09:16:01