我正在尝试使用正则表达式从以下字符串 [DOC TEXT] STARTS WITH [foo] 中获取文本“STARTS WITH”。我为此使用了以下代码。
String expertWhereClause = (String) formFields
.get(Constants.EXPERT_SEARCH_WHERECLAUSE);
String delims = "\\[(.*?)\\]";
String[] tokens = expertWhereClause.split(delims);
但我得到以下字符串“[, STARTS WITH ]”。我只想“开始于”。
我是正则表达式的新手,请帮帮我。
提前致谢
最佳答案
您可以为此使用 Matcher
:
Matcher m = Pattern.compile("\\]([^\\[]*)\\[").matcher("[Hello]world[!!!]");
while (m.find()) {
System.out.println(m.group(1));
}
这段代码片段prints world
在 ideone 上。
请注意我如何更改您的正则表达式以使用 [^\\[]*
代替 .*?
。 This improves efficiency ,这对于较长的输入可能很重要。
关于java - 如何获取括号 ] 和 [ 之间的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12078964/