我有一个文本文件,其中包含一些以“,”分隔的字符串。字符串的形式为:“x:somestring:any string”。我只想提取“somestring”值。我可以使用:
将“x:”替换为“”来提取“somestring:any string”Pattern p= Pattern.compile("x:", Pattern.CASE_INSENSITIVE);
Matcher m = p.matcher("");
但正如我之前所说,我只对“somestring”感兴趣。是否可以添加第二个模式以将“:any string”替换为“”。我想再次重复同样的过程,但我想问一个更好的方法。有什么方法可以改善我的正则表达式吗?请注意,“somestring”和“any string”不是固定值。
答案 0 :(得分:1)
使用拆分:
for (String s : subjectString.split(",")) {
s.split(":")[1];
}
答案 1 :(得分:0)
如果您的字符串subjectString
包含"x:somestring:any string"
,则以下内容将摘录somestring
:
Pattern regex = Pattern.compile(
"(?<=x:) # Assert position right after 'x:'\n" +
"[^:]* # Match any number of characters except colons",
Pattern.COMMENTS);
Matcher regexMatcher = regex.matcher(subjectString);
if (regexMatcher.find()) {
ResultString = regexMatcher.group();
}
答案 2 :(得分:0)
另一种简单的方法是:
"x:somestring:any string".replaceAll (".*:(.*):.*", "$1")