Java 정규식 OR 연산자


89

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

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

예 : Tel | Phone | Fax


괜찮아 보입니다. 어떤 문제가 있습니까?
danben 2010 년

1
네, 작동합니다. 클레 투스, 댄벤, 저도 동의합니다. 또한 @danben-제 이름은 Dan Beam입니다.
Dan Beam

답변:


156

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

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

이 문자열을 문자열이기도 한 다른 정규 표현식에서 구분해야하는 경우 어떻게해야합니까? 예 : eee (ff | gg) eee 괄호를 사용해야합니까?
Eric Conner

아, 신경 쓰지 마. 업데이트로 수정됩니다. 마지막 예는 제가 찾던 것입니다. 감사!
Eric Conner
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.