我需要一个正则表达式来验证必须存在的几个字符串的文本。说我有文本
- Rosy让男孩们狂野
- Marys野孩子确实非常疯狂
- 亨利是一个狂野的男孩
- 莎莉昨晚与3个男孩跳舞
醇>
我希望匹配既有'男孩'又'野'的句子(按任意顺序)。正确的匹配是1和2,但不是3和4。
任何人
答案 0 :(得分:3)
http://www.regular-expressions.info/reference.html
/.*?wild.*?boys.*|.*?boys.*?wild.*/
您想要使用.*?
,因为只有.*
是贪婪的并且将使用整个字符串。通过贪婪的比赛,你将没有剩下的角色来匹配“狂野”和“男孩”,所以它总是会失败。
答案 1 :(得分:3)
正则表达式在这里过度杀伤。这工作正常,更具可读性:
for (String str : new String[] { "Rosy made the boys go wild", "Marys wild boys are very crazy indeed",
"Henry is a wild boy", "Sally danced with 3 boys last night" }) {
if (str.contains("wild") && str.contains("boys")) {
System.out.println(str);
}
}
打印:
Rosy made the boys go wild
Marys wild boys are very crazy indeed
答案 2 :(得分:3)
.*(?=\bboys\b).*(?=\bwild\b)|.*(?=\bwild\b).*(?=\bboys\b)
答案 3 :(得分:0)
(^.*boys.*wild.* $|^.*wild.*boys.*$)
当然,根据您使用它的位置进行适当的转义。