2016-11-08 212 views
0

我有StringList<String>。我希望從String中提取我的List<String的內容,包括前後兩個字符。從字符串中提取特別匹配的子字符串

我已閱讀過StackOverflow的示例。沒有分界符,沒有劃分表明比賽是以任何形式劃定的。我已經使用RegEx詢問並審覈了答案,並認爲這可能是實現方法,但我的問題如何。

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

+0

這聽起來像你想要的正則表達式只是'(..ClaimNumber ..)'或者可能'(。?。?ClaimNumber。?。?)'來捕獲0或1前導/尾隨字符的情況。 – CollinD

+0

@CollinD是的,那是對的。包含在我的'List '中的變量'ClaimNumber'包含前後兩個字符。 – Mushy

回答

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 &@[email protected]& variable", 
          Arrays.asList("ClaimNumber"))); 
System.out.println(extract("The quick brown fox jumps over the lazy dog", 
          Arrays.asList("fox", "i"))); 

輸出

[&@[email protected]&] 
[quick, n fox j] 
相關問題