대안 및 적용
실제 응용 프로그램에서는 두 개 이상의 대안 중 하나와 일치하는 정규식을 자주 사용합니다. 또한 때때로 수량자를 사용하여 여러 표현식에 적용합니다. 이러한 모든 목표는 괄호로 묶음으로써 달성됩니다. 그리고 대안을 사용할 때 세로 막대(|)로 교대로 적용합니다.
세로 막대(|) 사용
대체는 여러 다른 대안 중 하나를 일치시켜야 할 때 유용합니다. 예를 들어, regex airways|airplane|bomber는 airways 또는 airways 또는 bomber를 포함하는 모든 텍스트와 일치합니다. 정규식 air(ways|plane)|bomber를 사용하여 동일한 결과를 얻을 수 있습니다.
정규식(airways|airplane|bomber)을 사용하면 세 가지 표현식 중 하나와 일치합니다. 첫 번째 식이 일치하면 두 개의 캡처가 있는 정규식(air(ways|plane)|bomber)(첫 번째 캡처는 airways 또는 plane, 두 번째 캡처는 way 또는 plane)이고 두 번째 표현식( 마리화나 담배). 다음과 같이 ?:를 사용하여 여는 괄호를 따라 캡처 효과를 끌 수 있습니다.
(항공(?:ways|비행기)|폭격기)
일치하는 경우(항공로, 비행기 또는 폭격기) 한 번만 캡처됩니다.
예시
다음 코드는 위에서 논의한 사항을 보여줍니다 -
import re s = 'airways aircraft airplane bomber' result = re.findall(r'(airways|airplane|bomber)', s) print result result2 = re.findall(r'(air(ways|plane)|bomber)', s) print result2 result3 = re.findall(r'(air(?:ways|plane)|bomber)', s) print result3
출력
이것은 출력을 제공합니다.
['airways', 'airplane', 'bomber'] [('airways', 'ways'), ('airplane', 'plane'), ('bomber', '')] ['airways', 'airplane', 'bomber']