[java] Java 정규식 OR 연산자

이것은 어리석은 질문 일 수 있지만 어디에서도 찾을 수 없습니다.

괄호없이 Java OR 정규식 연산자 (|)를 어떻게 사용할 수 있습니까?

예 : Tel | Phone | Fax



답변

파이프를 자체적으로 사용할 수 있습니다.

"string1|string2"

예를 들면 :

String s = "string1, string2, string3";
System.out.println(s.replaceAll("string1|string2", "blah"));

산출:

blah, blah, string3

괄호를 사용하는 주된 이유는 대안의 범위를 제한하는 것입니다.

String s = "string1, string2, string3";
System.out.println(s.replaceAll("string(1|2)", "blah"));

동일한 출력이 있습니다. 하지만 이렇게하면 :

String s = "string1, string2, string3";
System.out.println(s.replaceAll("string1|2", "blah"));

당신은 얻는다 :

blah, stringblah, string3

“문자열 1″또는 “2”라고 말 하셨기 때문입니다.

표현식의 해당 부분을 캡처하지 않으려면 다음을 사용하십시오 ?:.

String s = "string1, string2, string3";
System.out.println(s.replaceAll("string(?:1|2)", "blah"));


답변