我的文字包含以此格式表示的标签:[text other text]
。
我想用方括号拆分字符串作为分隔符,但是:
String.split("\\[|\\]");
这并没有给出预期的结果。
我该怎么做?
答案 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;);