정규식을 사용하면 주어진 문자열에서 공백과 줄바꿈을 제외한 모든 문자를 손쉽게 매칭할 수 있습니다. 핵심은 부정 문자 클래스(negated character class)인 [^ \n]입니다. 대괄호 안 맨 앞의 캐럿(^)은 "해당 문자들을 제외한다"는 의미로, 즉 공백( )과 줄바꿈(\n)이 아닌 모든 문자와 일치시킵니다.
패턴 구조 살펴보기
^: 문자열의 시작 위치[^ \n]*: 공백과 줄바꿈을 제외한 문자가 0개 이상 반복됨$: 문자열의 끝 위치
따라서 ^[^ \n]*$ 패턴은 문자열 전체가 공백이나 줄바꿈 없이 구성되어 있을 때만 매칭에 성공합니다.
예제 코드
import re print(re.match(r'^[^ \n]*$', """IfindTutorialspointuseful""")) print(re.match(r'^[^ \n]*$', """I find Tutorialspointuseful""")) print(re.match(r'^[^ \n]*$', """Ifind Tutorialspointuseful"""))
실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
<_sre.SRE_Match object at 0x00000000048965E0> None None
결과 분석
첫 번째 문자열 "IfindTutorialspointuseful"은 공백과 줄바꿈이 전혀 포함되어 있지 않으므로 매치 객체가 정상적으로 반환됩니다. 반면 두 번째 문자열에는 공백이, 세 번째 문자열에는 줄바꿈이 포함되어 있어 두 경우 모두 None이 반환됩니다.
추가 팁
파이썬 3 환경에서는 매치 객체가 <re.Match object; span=(0, 25), match='IfindTutorialspointuseful'> 형태로 출력됩니다. 또한 축약 문자 클래스인 \S(공백이 아닌 모든 문자)를 활용하면 ^\S*$처럼 더 간결하게 동일한 패턴을 표현할 수도 있습니다.