파이썬에서 문자열 내의 특정 문자를 찾을 때 정규식(Regular Expression)을 활용하면 매우 간편합니다. 이 글에서는 (a|b) 패턴을 사용하여 주어진 파이썬 문자열에서 'a' 또는 'b'에 해당하는 모든 문자를 찾아내는 방법을 소개합니다.
정규식에서 |(OR 연산자)는 왼쪽 또는 오른쪽 패턴 중 하나와 일치함을 의미합니다. 따라서 (a|b)는 문자열에서 'a' 혹은 'b'가 나타나는 위치를 모두 찾아냅니다.
또한 re.I 플래그를 함께 사용하면 대소문자를 구분하지 않고 매칭을 수행할 수 있습니다. 즉, 'A'와 'a', 'B'와 'b'를 동일하게 취급하여 검색 결과에 모두 포함시킵니다.
예제 코드
다음 예제는 re.findall() 함수를 사용하여 문자열 'Bank of Baroda'에서 'a' 또는 'b'에 해당하는 모든 문자를 추출합니다.
import re s = 'Bank of Baroda' print(re.findall(r'(a|b)', s, re.I))
실행 결과
위 코드를 실행하면 다음과 같은 출력을 얻을 수 있습니다.
['B', 'a', 'B', 'a', 'a']
결과 해석
'Bank of Baroda'라는 문자열에는 대소문자를 구분하지 않고 볼 때 'B' 1개, 'a' 4개, 그리고 단어 사이의 공백과 'o', 'f' 등이 포함되어 있습니다. re.findall()은 패턴과 일치하는 부분만 리스트 형태로 반환하므로, 위와 같이 일치하는 문자들만 순서대로 출력됩니다.
참고: 문자 클래스 사용하기
단일 문자의 OR 조건이라면 (a|b) 대신 문자 클래스 [ab]를 사용하는 것이 더 효율적입니다.
import re s = 'Bank of Baroda' print(re.findall(r'[ab]', s, re.I))
두 방법 모두 동일한 결과를 반환하지만, 문자 클래스는 그룹을 생성하지 않으므로 성능 면에서 약간 더 유리합니다. 여러 문자를 OR 조건으로 매칭해야 할 경우 문자 클래스를 우선적으로 고려해 보세요.