我正在尝试在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。
答案 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*)$
我想。