如何使用正则表达式匹配java中的多个单词?例如,addAction(“word”)
和intentFilter(“word”)
同时匹配?
我试过:
string REGEX ="[\\baddAction\\b|\\bintentFilter\\b]\\s*\([\"]\\s*\\bword\\b\\s*[\"]\)";
有人能告诉我这个格式有什么问题吗?我该如何修复它?
您试图在正则表达式中使用替代列表,但您使用的是字符类("[\\baddAction\\b|\\bintentFilter\\b]
)。对于字符类,其中的所有字符都是单独匹配的,而不是作为给定的序列。
你学会了单词边界,你还需要学会分组是如何工作的。
您有一个结构:双引号和括号中的单词字符。
因此,您需要对第一个单词进行分组,最好使用非捕获组,并从单词中删除一些单词边界(在指定上下文中是多余的):
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