如何使用正则表达式匹配Java中的多个单词

时间:2015-06-05 23:27:22

标签: java regex matching

如何使用正则表达式匹配java中的多个单词?例如,addAction("word")intentFilter("word")同时匹配?

我试过了:

string REGEX ="[\\baddAction\\b|\\bintentFilter\\b]\\s*\([\"]\\s*\\bword\\b\\s*[\"]\)";

有人可以告诉我这种格式有什么问题吗?我该如何解决?

1 个答案:

答案 0 :(得分:3)

您正在尝试在正则表达式中使用alternative lists,而是使用a character class"[\\baddAction\\b|\\bintentFilter\\b])。对于字符类,其中的所有字符都是单独匹配的,而不是给定的序列。

您了解了word boundary,还需要了解grouping的工作原理。

你有一个结构:单词字符 + 双引号和括号中的单词

因此,您需要对第一个进行分组,最好使用非捕获组,并从word中删除一些字边界(在指定的上下文中是多余的):

String rgx ="\\b(?:addAction|intentFilter)\\b\\s*\\(\"\\s*word\\s*\"\\)";
System.out.println("addAction(\"word\")".matches(rgx));
System.out.println("intentFilter(\"word\")".matches(rgx));

the demo

的输出
true
true