java - 如何获取括号 ] 和 [ 之间的字符串

标签 java regex

我正在尝试使用正则表达式从以下字符串 [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/

相关文章:

regex - 如何跟踪正则表达式匹配的执行?

java - 不安全操作编译器错误是什么意思?

regex - 查找命令与 'regex' 匹配不工作

regex - 如何在 React Router DOM 中使用正则表达式从路由匹配中排除参数?

java - scala-android.jar 里有什么?

Javascript 正则表达式帮助,负向前瞻

Java正则表达式验证用户名长度

java - 正则表达式在 regexpal 中工作,但在 Java 中不起作用

java - 无法返回 boolean 值的真值

java - 安卓结构: Two classes for one activity