我有这样的字符串,
["[number][name]statement_1.","[number][name]statement_1."]
我只想statement_1
和statement_2
。我曾经尝试过这种方式
String[] statement = message.trim().split("\\s*,\\s*");
但它给["[number][name]statement_1."
和"[number][name]statement_2."]
。我怎么只能得到statement_1
和statement_2
?
全部匹配而不是拆分
拆分和匹配全部是同一枚硬币的两个面。在这种情况下,“全部匹配”会更容易。
您可以使用此正则表达式:
(?<=\])[^\[\]"]+(?=\.)
在正则表达式演示中查看匹配项。
在Java代码中:
Pattern regex = Pattern.compile("(?<=\\])[^\\[\\]\"]+(?=\\.)");
Matcher regexMatcher = regex.matcher(yourString);
while (regexMatcher.find()) {
// the match: regexMatcher.group()
}
在回答您的问题以分别获得两个匹配项时:
Pattern regex = Pattern.compile("(?<=\\])[^\\[\\]\"]+(?=\\.)");
Matcher regexMatcher = regex.matcher(yourString);
if (regexMatcher.find()) {
String theFirstMatch: regexMatcher.group()
}
if (regexMatcher.find()) {
String theSecondMatch: regexMatcher.group()
}
说明
(?<=\])
断言当前位置之前是]
[^\[\]"]+
匹配一个或多个不是的字符[
,]
或者"
(?=\.)
断言下一个字符是一个点参考
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句