如何使用正则表达式匹配java中的多个单词?例如,addAction("word")
和intentFilter("word")
同时匹配?
我试过了:
string REGEX ="[\\baddAction\\b|\\bintentFilter\\b]\\s*\([\"]\\s*\\bword\\b\\s*[\"]\)";
有人可以告诉我这种格式有什么问题吗?我该如何解决?
答案 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));
的输出
true
true