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.