파이썬 정규 표현식에서 '또는' 명령어
'|' 명령어는
[ ] 명령어보다 더 강력한 버전의
'또는'을 나타냅니다. 이 명령어는
정규 표현식을 여러 부분으로 나눌 수 있게 합니다.
이때 찾고자 하는 대상은
정규 표현식의 한 부분에 맞을 수도 있고,
다른 부분에 맞을 수도 있습니다. 예제를 통해 살펴보겠습니다.
예제
이 예제에서 검색 패턴은 다음과 같습니다:
문자 'a'가 세 번 반복되거나 문자
'b'가 세 번 반복되는 패턴:
txt = 'aaa bbb abb'
res = re.sub('a{3}|b{3}', '!', txt)
print(res)
코드 실행 결과:
'! ! abb'
예제
이 예제에서 검색 패턴은 다음과 같습니다:
문자 'a'가 세 번 반복되거나 1회 이상의
문자 'b'가 반복되는 패턴:
txt = 'aaa bbb bbbb bbbbb axx'
res = re.sub('a{3}|b+', '!', txt)
print(res)
코드 실행 결과:
'! ! ! ! axx'
예제
이 예제에서 검색 패턴은 다음과 같습니다: 하나 이상의 문자 또는 세 개의 숫자:
txt = 'a ab abc 1 12 123'
res = re.sub('[a-z]+|\d{3}', '!', txt)
print(res)
코드 실행 결과:
'! ! ! 1 12 !'
예제
수직 막대는 정규 표현식을 두 부분이 아닌 여러 부분으로 나눌 수 있습니다:
txt = 'aaa bbb ccc ddd'
res = re.sub('a+|b+|c+', '!', txt)
print(res)
코드 실행 결과:
'! ! ! ddd'
예제
수직 막대가 괄호 안에 있으면,
'또는'은
해당 괄호 내에서만 작동합니다.
예를 들어, 다음 패턴에 맞는 문자열을 찾아봅시다: 시작 부분에
'a' 또는 'b'가 한 번 이상 오고,
그 뒤에 문자 'x'가 두 번 오는 패턴:
txt = 'axx bxx bbxx exx'
res = re.sub('(a|b+)xx', '!', txt)
print(res)
코드 실행 결과:
'! ! ! exx'
실습 문제
다음 문자열이 주어졌을 때:
txt = 'aeeea aeea aea axa axxa axxxa'
다음 패턴에 맞는 문자열을 찾는 정규 표현식을 작성하세요: 양쪽 끝에 문자
'a'가 있고, 그 사이에 - 문자
'e'가 임의의 횟수로 반복되거나 문자
'x'가 임의의 횟수로 반복되는 패턴.
다음 문자열이 주어졌을 때:
txt = 'aeeea aeea aea axa axxa axxxa'
다음 패턴에 맞는 문자열을 찾는 정규 표현식을 작성하세요: 양쪽 끝에 문자
'a'가 있고, 그 사이에 - 문자
'e'가 두 번 반복되거나 문자 'x'가
임의의 횟수로 반복되는 패턴.