2013-03-04 127 views
0

用於從[[text]]中獲取值的正則表達式。我試過了正則表達式用於在括號內獲得值的Java正則表達式

"((?<=[[)*(?=]])*)+" the value between [[ ]] is not obtained. 

例如,從字符串[[text]]中,我們應該獲取文本。

Pattern pat = Pattern.compile("((?<=\\[[)*(?=\\]])*)"); 
Matcher matcher = pat.matcher("[[text]]"); 
String next =""; 
while(matcher.find()) { 
    next = matcher.group(0); 
break; 
} 
System.out.println(next); //next should be text 
+0

請開發你的答案......更好地解釋你的問題,顯示代碼,等... – 2013-03-04 15:54:48

+0

什麼@MatiasCaamaño說 - 建議:舉一個例子。該值可以包含單個']'字符嗎? – 2013-03-04 15:56:55

回答

2

你需要用它們作爲正則表達式的實際字符的時候逃跑括號[]。而且您還需要添加一些內容以實際捕獲括號內的內容。您可以使用.*或使用我的方法,如果您確定該值不能包含]

((?<=\[\[)([^\]]*)(?=\]\]))+ 

竟然沒有一個真正的需要,除非你明確地需要從比賽免除那些限制器使用的回溯期UND向前看符號。這將很好的工作:

\[\[([\]]*\]\] 

很顯然,當你把這些成一個字符串,你需要添加額外的\逃脫\的字符串......他們只是更具可讀性這種方式。

1

如果你不想進入regexString.replaceAll也可以幫助你。

String s2 = s.replaceAll("\\[", "").replaceAll("\\]", ""); 
1
"(?<=\\[\\[)[^\\]]*" 

這應該爲你工作