从字符串中提取特定匹配的子字符串

时间:2016-11-08 21:52:49

标签: java string extract

我有StringList<String>。我希望从String中提取List<String内容,包括前后两个字符。

我查看了StackOverflow的示例。没有分隔符,没有分界表明匹配是以任何形式描绘的。我已经使用RegEx询问并回复了答案,并认为可能是这样做的,但我的问题是怎样的。

如果我有String toParse = "Parse this to grab the &@ClaimNumber@& variable";而我的List<String>包含ClaimNumber,是否有面向对象的解决方案?

1 个答案:

答案 0 :(得分:1)

以下方法将在suggestion by CollinD之后添加正确引用动态搜索值:

private static List<String> extract(String input, List<String> keywords) {
    StringJoiner regex = new StringJoiner("|");
    for (String keyword : keywords)
        regex.add(".." + Pattern.quote(keyword) + "..");
    List<String> result = new ArrayList<>();
    for (Matcher m = Pattern.compile(regex.toString()).matcher(input); m.find(); )
        result.add(m.group());
    return result;
}

测试

System.out.println(extract("Parse this to grab the &@ClaimNumber@& variable",
                           Arrays.asList("ClaimNumber")));
System.out.println(extract("The quick brown fox jumps over the lazy dog",
                           Arrays.asList("fox", "i")));

输出

[&@ClaimNumber@&]
[quick, n fox j]