0
인자로 패턴을 가져 와서 부정 된 패턴을 반환하는 메소드가 필요합니다. 입력 패턴은 항상 charclass입니다 (그렇지 않으면 불가능합니다). 똑 바른 시도부정화 된 charclass 패턴을 만드는 방법은 무엇입니까?
public Pattern negate(Pattern p) {
return Pattern.compile("[^" + p.pattern() + "]");
}
private void test() {
final Pattern p = Pattern.compile("[a-z]");
final Pattern n = negate(p);
System.out.println(n.matcher("0").matches());
}
중첩 charclass의 시작으로 문자 대신 취해지고 ([^xyz[
달리) 때문에 [
[^[
에 실패합니다.
네 말이 맞아. 집합 차이 연산자'--'가 없기 때문에 가능성이 없습니다. caret가 그들을 무효로하지 않기 때문에, 네스트 한 char 클래스에서는 당신의 솔루션이 작동하지 않습니다. – maaartinus