我想创建一个正则表达式,选择记录中至少有3个单词出现在记录中的记录。我尝试下面的正则表达式,但他们都不需要三个匹配:
(apple|orange|gray|hair|hat|head){3} --must have three
((apple|orange|gray|hair|hat|head).*){3} --must have three
答案 0 :(得分:0)
(.*(apple|orange|gray|hair|hat|head).*){3,}
答案 1 :(得分:0)
试试这个:
(?:.*?(?!.*\1)(apple|orange|gray|hair|hat|head).*?){3,}
它将从下一场比赛中排除上一场比赛。因此,请确保您获得3种不同的匹配。
答案 2 :(得分:0)
public static boolean isContainSpecialChar(String str){
String exp="((apple)\\s?\\.?|(orange)\\s?\\.?|(gray)\\s?\\.?|(hair)\\s?\\.?|(hat)\\s?\\.?|(head)\\s?\\.?){3}$";
Pattern p = Pattern.compile(exp);
return p.matcher(str).matches();
}
public static void main(String[] args) {
System.out.println(isContainSpecialChar("hair apple hat"));
output:
true
答案 3 :(得分:0)
为了后人的缘故,如果你确实有真正的正则表达式(perl),并且因为没有人提供过这方面的工作示例:
/(apple|orange|additionalTerm).*?\1.*?\1/