내 질문에 String.matches()
과 함께 사용할 경우 Pattern.compile()
을 사용하여 컴파일 된 패턴을 재사용 할 수 있습니까? Java의 재사용 패턴 인스턴스
가 말하는 문서에서, 때문에
,
matches
방법은 정규 표현식은 한 번만 사용하는 경우의 편의를이 클래스에 의해 정의된다. 이 메서드는 표현식을 컴파일하고 호출에서 입력 시퀀스와 일치시킵니다. 반복되는 것이 컴파일 된 패턴이 재사용되는 것을 허용하지 않기 때문에이 효율성이 떨어집니다 일치하지만 문boolean b = Pattern.matches("a*b", "aaaaab");
은, 위의 세 문에 해당합니다.
http://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html
그것은 단지 당신이 Pattern.matches를 사용할 때 덜 효율적이된다라고 말한다.
이형태
str.matches(regex)
의 메소드 호출은 정확히 내가 아니다Pattern.matches(regex, str)
http://docs.oracle.com/javase/6/docs/api/java/lang/String.html#matches(java.lang.String)
그래서 표현과 같은 결과를 를 산출 : 그리고이 부분에 혼란있어 String.matches
이 Pattern.matches
을 사용하고 그 때문에 컴파일 된 패턴을 다시 사용할 수 없기 때문에 확실합니다. 사실 컴파일 된 패턴을 상수 (최적화 목적으로)로 설정하려고했습니다.
를 사용하고자 할 때마다 정규를 얻을 수 있습니다 :
당신은 예를 들어,
Pattern
클래스의 인스턴스를 저장하여 컴파일 된 패턴을 다시 사용할 수 있습니다 'String.matches()'를 사용할 때 컴파일 된 패턴에 접근 할 수 없으므로, no. 그리고 당신은 그것을 잘못 읽고 있습니다. 그것 때문에,'String.matches()'(그리고'Pattern.matches()'같은 것)는 컴파일 할 때마다 패턴을 컴파일하기 때문에 컴파일 된 패턴을 재사용하는 것보다 비효율적입니다 그것. –