从java中的csv文件中提取字符串

时间:2012-06-23 17:11:58

标签: java regex

我有一个文本文件,其中包含一些以“,”分隔的字符串。字符串的形式为:“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”不是固定值。

3 个答案:

答案 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")