정규 표현식에서 \W 패턴은 단어 문자(alphanumeric 및 밑줄 _)가 아닌 모든 문자를 의미합니다. 즉, 영문자·숫자·밑줄을 제외한 특수 기호나 공백 등이 이에 해당합니다.
아래 예제 코드는 주어진 문자열에서 모든 비단어 문자를 찾아 리스트 형태로 출력합니다.
예제
import re s = 'ab5z8d*$&Y@' regx = re.compile(r'\W') result = regx.findall(s) print(result)
출력 결과
['*', '$', '&', '@']
코드 설명
- re.compile(r'\W'): 비단어 문자에 해당하는 정규 표현식 패턴을 미리 컴파일합니다. raw string(
r'')을 사용하면 역슬래시 처리가 간편해집니다. - findall(s): 입력 문자열에서 패턴과 일치하는 모든 부분을 리스트로 반환합니다.
\W는 사실상 [^a-zA-Z0-9_]와 동일한 의미입니다. 따라서 위 예제에서 알파벳(a, b, z, d, Y)과 숫자(5, 8)는 제외되고, 특수 문자인 *, $, &, @만 결과 리스트에 담기게 됩니다.
반대로 단어 문자만 매칭하고 싶다면 소문자 \w 패턴을 사용하면 됩니다.