2012-02-03 3 views
2

3 및 7을 포함하는 모든 숫자를 허용하는 Java의 정규 표현식 일치를 생성하려고합니다 (모든 순서로, 즉 모든 3에 대해 7 개 이상이어야하며 그 반대의 경우도 가능).)를 정수 집합에 적용합니다. 지금까지 아래 코드를 작성했지만 올바른 출력을 얻을 수는 없습니다. 도움의 어떤 종류 이해할 수있을 것이다 :Java에서 일치하는 정규 표현식

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

+1

죄송합니다. 그러나이 모듈을 사용해야하는 다른 작업 모듈입니다. 비 컴퓨터 과학자의 경우 Java는 코드 작성이 쉽기 때문에 정규 표현식을 고수하고 싶습니다. – hytriutucx

+0

@ 루시퍼 : 완료! – hytriutucx

답변

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); 
0

^(\d*3\d*7\d*)|(\d*7\d*3\d*)$ 생각합니다. 당신의 설명에서

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"); 

때문에,이 운동은 불필요하게 복잡해진다.

관련 문제