0

从 [[text]] 获取值的正则表达式。我试过正则表达式

  "((?<=[[)*(?=]])*)+"  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
4

3 回答 3

2

[]将括号用作正则表达式中的实际字符时,您需要转义括号。您还需要添加一些内容来实际捕获括号之间的内容。如果您.*确定该值不能包含].

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

除非您明确需要从匹配中排除这些限制器,否则甚至不需要使用回溯和前瞻。这也可以:

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

显然,当您将它们放入字符串时,您需要添加额外的内容\来转义\字符串……它们只是这样更具可读性。

于 2013-03-04T15:55:45.420 回答
1

如果你不想进入regexString.replaceAll也可以帮助你。

String s2 = s.replaceAll("\\[", "").replaceAll("\\]", "");
于 2013-03-04T15:57:41.043 回答
1
"(?<=\\[\\[)[^\\]]*"

这应该适合你

于 2013-03-04T15:57:50.487 回答