【发布时间】:2015-08-21 00:53:49
【问题描述】:
如何使用正则表达式匹配java中的多个单词?比如addAction("word")和intentFilter("word")同时进行匹配?
我试过了:
string REGEX ="[\\baddAction\\b|\\bintentFilter\\b]\\s*\([\"]\\s*\\bword\\b\\s*[\"]\)";
谁能告诉我这种格式有什么问题,我该如何解决?
【问题讨论】:
如何使用正则表达式匹配java中的多个单词?比如addAction("word")和intentFilter("word")同时进行匹配?
我试过了:
string REGEX ="[\\baddAction\\b|\\bintentFilter\\b]\\s*\([\"]\\s*\\bword\\b\\s*[\"]\)";
谁能告诉我这种格式有什么问题,我该如何解决?
【问题讨论】:
您尝试在正则表达式中使用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
【讨论】:
line @.