使用 Java 通过正则表达式查找较大字符串的子字符串
如果我有这样的字符串:
FOO[BAR]
我需要一种通用的方法来从字符串中获取“BAR”字符串,以便无论方括号之间的字符串是什么,它都能够获取字符串。
例如:
FOO[DOG] = DOG
FOO[CAT] = CAT
如果我有这样的字符串:
FOO[BAR]
我需要一种通用的方法来从字符串中获取“BAR”字符串,以便无论方括号之间的字符串是什么,它都能够获取字符串。
例如:
FOO[DOG] = DOG
FOO[CAT] = CAT
你应该能够使用非贪婪的量词,特别是*?。您可能需要以下内容:
Pattern MY_PATTERN = Pattern.compile("\\[(.*?)\\]");
这将为您提供一个与您的字符串匹配的模式,并将文本放在第一组的方括号内。请查看模式 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("]"));
或者,为了稍微提高性能/内存使用率(感谢Hosam):
String input = "FOO[BAR]", extracted;
extracted = input.substring(input.indexOf('['),input.lastIndexOf(']'));