使用Java使用正則表達式查找更大字符串的子字符串如果我有這樣的字符串:FOO[BAR]我需要一種通用的方法來從字符串中獲取“BAR”字符串,這樣無論方括號之間的字符串是什么,它都能夠獲得字符串。例如FOO[DOG] = DOG
FOO[CAT] = CAT
3 回答

侃侃無極
TA貢獻2051條經驗 獲得超10個贊
你應該能夠使用非貪婪的量詞,特別是* ?. 你可能想要以下內容:
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"}

富國滬深
TA貢獻1790條經驗 獲得超9個贊
非正則表達方式:
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(']'));
添加回答
舉報
0/150
提交
取消