正则表达式,用于选择记录集中至少有n个单词出现的记录

时间:2012-02-23 02:12:50

标签: mysql regex

我想创建一个正则表达式,选择记录中至少有3个单词出现在记录中的记录。我尝试下面的正则表达式,但他们都不需要三个匹配:

  (apple|orange|gray|hair|hat|head){3} --must have three

  ((apple|orange|gray|hair|hat|head).*){3} --must have three

4 个答案:

答案 0 :(得分:0)

(.*(apple|orange|gray|hair|hat|head).*){3,}

答案 1 :(得分:0)

试试这个:

(?:.*?(?!.*\1)(apple|orange|gray|hair|hat|head).*?){3,}

它将从下一场比赛中排除上一场比赛。因此,请确保您获得3种不同的匹配。

rubular

答案 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/