Java怎么使用正则表达式查找较大字符串的子字符串?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (101)

如果我有这样的字符串:

FOO[BAR]

我需要一个通用的方式来从字符串中获取“BAR”字符串,以便不管方括号之间的字符串是什么都可以得到字符串。

FOO[DOG] = DOG
FOO[CAT] = CAT
提问于
用户回答回答于

你应该可以使用量词,特别是* ?. 你可能会想要以下内容:

Pattern MY_PATTERN = Pattern.compile("\\[(.*?)\\]");

这将给你一个模式,将匹配你的字符串,并把方括号内的文字放在第一组。查看Pattern API文档以获取更多信息。

要提取字符串,可以使用如下所示的内容:

Matcher m = MY_PATTERN.matcher("FOO[BAR]");
while (m.find()) {
    String s = m.group(1);
    // s now contains "BAR"
}
用户回答回答于

非正则方法:

String input = "FOO[BAR]", extracted;
extracted = input.substring(input.indexOf("["),input.indexOf("]"));

或者,为了稍微改善性能/内存使用:

String input = "FOO[BAR]", extracted;
extracted = input.substring(input.indexOf('['),input.lastIndexOf(']'));

扫码关注云+社区

领取腾讯云代金券