如何使用String.split在方括号之间提取文本

时间:2013-11-03 10:20:53

标签: java text-parsing

我的文字包含以此格式表示的标签:[text other text]

我想用方括号拆分字符串作为分隔符,但是:

String.split("\\[|\\]");

这并没有给出预期的结果。

我该怎么做?

4 个答案:

答案 0 :(得分:7)

我不确定是否可以使用split()执行此操作。通过模式查找和模式中的[^\\]]+(“所有符号直到结束括号”),这非常简单:

public static void main(String[] args) {
    String line = "xx [text other text], [jili u babusi dva veselikh gusya], " +
        "[a granny there was having two gay gooses] zz";

    Matcher matcher = Pattern.compile("\\[([^\\]]+)").matcher(line);

    List<String> tags = new ArrayList<>();

    int pos = -1;
    while (matcher.find(pos+1)){
        pos = matcher.start();
        tags.add(matcher.group(1));
    }

    System.out.println(tags);
}

答案 1 :(得分:1)

你可以使用Pattern.quote(“你的模式在这里”),如下所述,

str.split(Pattern.quote("["));

答案 2 :(得分:0)

我知道这是4年前被问到的,但对于那些有相同/类似问题的人(就像我一样),有一些东西比使用正则表达式更简单:

String result = StringUtils.substringBetween(str, "[", "]");

在您的示例中,result将作为&#34;文本其他文本&#34;返回,如果需要,您可以使用StringUtils.split()进一步分割。我建议StringUtils库用于各种(相对简单的)字符串操作;它会自动处理null输入等事情,这很方便。

substringBetween()的文档: https://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/StringUtils.html#substringBetween-java.lang.String-java.lang.String-java.lang.String-

此函数还有另外两个版本,具体取决于开始和结束分隔符是否相同,以及分隔符是否多次出现在目标字符串中。

答案 3 :(得分:-1)

您可以使用split方法并将答案放在数组中

String [] d = s.split(&#34;(\\ [)|(\\])&#34;);