正则表达式在Java中匹配

时间:2012-02-03 03:38:28

标签: java regex string pattern-matching

我正在尝试在Java中生成一个正则表达式匹配,它接受包含 3和7 的所有数字(以任何顺序,即所有3个应该至少有一个7,反之亦然)在整数集上。到目前为止,我已经编写了下面的代码,但是我无法获得正确的输出。任何形式的帮助将不胜感激:

class Main {
  public static void main (String[] args) throws java.lang.Exception {
    System.out.println("333333".matches("[[3][7]+]*") ? "Yes" : "No");
  }
}

在这里,我应该将输出设为NO,因为给定的字符串只有3不是3而且至少有7。

3 个答案:

答案 0 :(得分:2)

我不确定是否需要正则表达式。为什么不使用以下内容:

public static boolean containsDigit(int n, int digit) {
    return String.valueOf(n).contains(String.valueOf(digit));
}

...

int n = 333333;
boolean nContains3And7 = containsDigit(n, 3) && containsDigit(n, 7);

答案 1 :(得分:1)

根据您的描述,这应该足够了:

String input = "333333";
// Input string contains both a 3 and a 7.
System.out.println(((input.indexOf("3") > -1) && (input.indexOf("7") > -1)) ? "Yes" : "No");

由于正则表达式检查一系列字符,因此该练习变得不必要地复杂化。

答案 2 :(得分:0)

^(\d*3\d*7\d*)|(\d*7\d*3\d*)$我想。