1

我有一个文本文件,其中包含一些用“,”分隔的字符串。字符串的形式为:“x:somestring:any string”。我只对提取“somestring”值感兴趣。我可以通过使用“”替换“x:”来提取“somestring:any string”:

Pattern p= Pattern.compile("x:", Pattern.CASE_INSENSITIVE);
Matcher m = p.matcher("");

但正如我之前所说,我只对“somestring”感兴趣。是否可以添加第二个模式以将“:任何字符串”替换为“”。我想再次重复相同的过程,但我想问一个更好的方法。有什么办法可以改善我的正则表达式?请注意,“somestring”和“any string”不是固定值。

4

3 回答 3

1

使用拆分:

    for (String s : subjectString.split(",")) {
        s.split(":")[1];
    }
于 2012-06-23T18:46:31.100 回答
0

另一种简单的方法是:

"x:somestring:any string".replaceAll (".*:(.*):.*", "$1")
于 2012-06-24T09:02:09.397 回答
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();
} 
于 2012-06-23T18:41:44.993 回答