带有变量字符串的Java正则表达式

时间:2014-03-25 06:26:35

标签: java regex

我想找到ListArray中所有单词的出现,并将其与String进行比较。到目前为止,我能够将其作为for循环,我存储所有可能的组合并使用匹配运行它们。

        for(String temp_keywords: keywords){
        final_keywords_list.add(" "+ temp_keywords+ " ");
        final_keywords_list.add(" "+ temp_keywords+".");
        final_keywords_list.add(" "+ temp_keywords+ ",");
        final_keywords_list.add(" "+ temp_keywords+ "!");
        final_keywords_list.add(" "+ temp_keywords+ "/");
        final_keywords_list.add(" "+ temp_keywords+ "?");
    }
    for (String temp_keywords : final_keywords_list) {
            String add_space = temp_keywords.toLowerCase();
            p = Pattern.compile(add_space);
            m = p.matcher(handler_string);
            int count = 0;
            while (m.find()) {
                count += 1;
            }

但是,我想删除组合的手动添加并执行正则表达式。我已经看过使用正则表达式的单词示例但是如何在正则表达式中添加变量字符串?对不起,我是初学者java学习者。

1 个答案:

答案 0 :(得分:1)

这是你需要的吗?

String inputString = ....
String[] keywords = ....

StringBuilder sb = new StringBuilder();
for(String keyword: keywords)
  sb.append("(?<= )").append(keyword).append("(?=[ .,!/?])").append("|");
sb.setLength(sb.length() - 1); //Removes trailing "|". Assumes keywords.size() > 0.

Pattern p = Pattern.compile(sb.toString());
Matcher m = p.matcher(inputString);
int count = 0;
while (m.find())
  count++;

它创建一个正则表达式,编译它,然后计算匹配。