如何在括号之间获取字符串]和[

时间:2012-08-22 18:10:18

标签: java regex

我正在努力获取文字" STARTS WITH"从使用正则表达式的字符串[DOC TEXT] STARTS with [foo]开始。我已经使用了以下代码。

String expertWhereClause = (String) formFields
                    .get(Constants.EXPERT_SEARCH_WHERECLAUSE);
            String delims = "\\[(.*?)\\]";
            String[] tokens = expertWhereClause.split(delims);

但我正在追踪字符串" [,STARTS WITH]"。我只想要" STARTS WITH"。

是正则表达式的新手,请在这里帮助我。

提前致谢

3 个答案:

答案 0 :(得分:3)

您可以使用Matcher

Matcher m = Pattern.compile("\\]([^\\[]*)\\[").matcher("[Hello]world[!!!]");
while (m.find()) {
    System.out.println(m.group(1));
}

这个代码片段prints world在ideone上。

请注意我将正则表达式更改为使用[^\\[]*代替.*?This improves efficiency,这对于更长时间的输入可能很重要。

答案 1 :(得分:1)

使用此正则表达式:

\]\s*([^\[]*?)\s*\[

您可能需要根据您使用的语言转义反斜杠 更新:对于Java,请转义反斜杠

\\]\\s*([^\\[]*?)\\s*\\[

在第一组中捕获所需的文本。

答案 2 :(得分:1)

如果是Java,那么您可以使用以下代码:

String str = "[DOC TEXT] STARTS WITH [foo] ";
System.out.printf("<%s>%n", 
                    str.replaceAll("^[^\\]]+\\]\\s*([^\\[]+?)\\s*\\[.*$", "$1"));
// output
//<STARTS WITH>