我有包含以这种格式表示的标签的文本:[text other text]
.
我想使用方括号作为分隔符来分割字符串,但是这个:
String.split("\\[|\\]");
这不会给出预期的结果。
我怎样才能做到这一点?
我有包含以这种格式表示的标签的文本:[text other text]
.
我想使用方括号作为分隔符来分割字符串,但是这个:
String.split("\\[|\\]");
这不会给出预期的结果。
我怎样才能做到这一点?
我不确定是否可以使用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);
}
我知道这是 4 年前问过的,但是对于在这里遇到相同/相似问题的人(就像我所做的那样),还有比使用正则表达式更简单的东西:
String result = StringUtils.substringBetween(str, "[", "]");
在您的示例中,result
将作为“文本其他文本”返回,如果需要,您可以使用 StringUtils.split() 进一步拆分。我会推荐 StringUtils 库用于各种(相对简单的)字符串操作;它自动处理空输入之类的事情,这很方便。
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-
该函数还有另外两个版本,取决于开始和结束分隔符是否相同,以及分隔符是否在目标字符串中出现多次。
您可以使用 Pattern.quote("YOUR PATTERN GOES HERE"),如下所述,
str.split(Pattern.quote("["));
您可以使用 split 方法并将答案放入数组中
字符串 [] d = s.split("(\\[)|(\\])");