正则表达式:重复具体数字var与重复任何数字var(Java)

时间:2012-05-21 18:10:54

标签: java regex string pattern-matching

myString.match(“[\ d] *”)给出了12345和77777的真实

但我正在寻找的是12345的假,而7777是真的

2 个答案:

答案 0 :(得分:4)

(\d)\1*\D

将测试重复的相同数字,然后是非数字。 \1指的是(...)匹配的值,它将是第一个数字。

(不确定最后你想要什么 - 你可能想要$交换\D(行尾) - 但你需要一些东西让778失败)

答案 1 :(得分:2)

安德鲁库克提出的解决方案是一个很好的开始 - 他的表达方式可以完美地捕捉重复的数字。然而,为了发现只有重复的数字,我认为你需要使用边界匹配器,如http://docs.oracle.com/javase/tutorial/essential/regex/bounds.html中所述。

我创建了一段代码片段,向您展示如何执行它:

public static void main(String[] args) {
  Pattern pattern = Pattern.compile("^(\\d)\\1*$");
  String[] testArray = {"1111", "2111", "1111 ", "1111 2", "1234", "9999"};
  for (int i=0; i<teste.length; i++) {
     Matcher matcher = pattern.matcher(testArray[i]);
     boolean found=false;
     while (matcher.find()) {
         System.out.println("Text " + matcher.group() + " found at " + matcher.start()+" ending at index "+matcher.end());
         found=true;
     }
     if (!found) {
        System.out.println("not found for "+testArray[i]);
     }
  }
}

我希望它有所帮助。