2013-03-04 65 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
"(?<=\\[\\[)[^\\]]*" 

这应该为你工作