匹配模式与正则表达式排除某些字符

时间:2016-02-09 17:23:48

标签: java regex

我想使用正则表达式创建包含" ["之间的字符的子串。和"]"括号但没有括号本身。

例如:

This is a String with [the substring I want].

我使用的正则表达式如下:

\[.*?\]

它的工作正常,除了它在比赛中还包括括号。所以我得到的结果是:

[the substring I want]

而不是

the substring I want

是的,之后我可以很容易地摆脱括号,但有没有办法让它们完全不匹配?

1 个答案:

答案 0 :(得分:1)

使用“lookarounds”:

String test = "This is a String with [the substring I want].";
//                          | preceding "[", not matched
//                          |      | any 1+ character, reluctant match
//                          |      |  | following "]", not matched
//                          |      |  | 
Pattern p = Pattern.compile("(?<=\\[).+?(?=\\])");
Matcher m = p.matcher(test);
if (m.find()) {
    System.out.println(m.group());
}

<强>输出

the substring I want