我想使用正则表达式创建包含" ["之间的字符的子串。和"]"括号但没有括号本身。
例如:
This is a String with [the substring I want].
我使用的正则表达式如下:
\[.*?\]
它的工作正常,除了它在比赛中还包括括号。所以我得到的结果是:
[the substring I want]
而不是
the substring I want
是的,之后我可以很容易地摆脱括号,但有没有办法让它们完全不匹配?
答案 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