Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

정규 표현식 대안은 Python에서 어떻게 작동합니까?

<시간/>

대안 및 적용

실제 응용 프로그램에서는 두 개 이상의 대안 중 하나와 일치하는 정규식을 자주 사용합니다. 또한 때때로 수량자를 사용하여 여러 표현식에 적용합니다. 이러한 모든 목표는 괄호로 묶음으로써 달성됩니다. 그리고 대안을 사용할 때 세로 막대(|)로 교대로 적용합니다.

세로 막대(|) 사용

대체는 여러 다른 대안 중 하나를 일치시켜야 할 때 유용합니다. 예를 들어, 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']