查找文本的包含特定的英语单词,这个单词出现且出现两次,例如:djfsljssdd
fdsf word fsfsfsf
可能有汉字 sdff word怎么写这个正则表达式来查找上面的word,注意是要word出现两次才算找到.

解决方案 »

  1.   

    .+?(word).+?\1.+
    \1表示匹配前一次个组里面的内容。
     package com.google.algorithm;import java.util.regex.Pattern;public class Test {

    public static void main(String[] args) {
    String input = "djfsljssdd fdsf word fsfsfsf";
    System.out.println(Pattern.matches(".+?(word).+?\\1.+", input));
    //输出false

    input = "djfsljssdd word fdsf word fsfsfsf";
    System.out.println(Pattern.matches(".+?(word).+?\\1.+", input));
    //输出true
    }}
      

  2.   

    把多行匹配的flag设置好就好了,那么.也就可以匹配换行符了。