해당 정규 표현식은 하나 또는 그 보다 많은 숫자 글자 (\d+), 그 다음에 공백 문자 (\s), 그다음에는 하나 또는 그보다 많은 문자,숫자,밑줄 글자(w+)를 가진 텍스트를 찾습니다.
import re
regex = re.compile(r'[낭만코더]')
print(regex.findall('낭만 만두 코딩 더럽다 부대찌개 지지'))
결과값
['낭', '만', '만', '코', '더']
다음 정규식은 사용자 정의 정규식으로 [] (대괄호) 안에 문자를 정의하면 각각의 모음과 일치한다. 예문에서는 한글로 되어 있기 때문에 한글의 한글자와 매칭하는 글들을 찾아 주기 때문에 결과값이 저런식으로 호출 되는 것을 알 수 있습니다. 영문으로 되는건 직접 해보시기 바랍니다.
사용자 정규식 한에 캐럿문자(^)를 두면 부정형 문자 클래스. 즉, 해당하는 반대의 ( 문자 클래스에 없는 모든 문자와 ) 모든 문자와 일치 하기 때문에 공백 문자도 포함됩니다. 따라서 해당 결과값이 발생합니다.
import re
regex = re.compile(r'^낭만')
print(regex.findall('낭만코더, 코더낭만, 만낭만낭, 테테테테낭만')
결과값
['낭만']
위 정규 표현식은 검색 텍스트의 시작 부분에서 일치하는 텍스트를 나타내는 것이다. "낭만"이라는 단어로 시작되는 텍스트에서 낭만만 뽑아내기 때문에 결과값이 저렇게 나왔습니다. 반대로 문자열이 정규식 패턴으로 끝나야 한다는 것을 하기 위해서는 $ 기호를 붙이면 됩니다. 그 부분은 직접 해보시길 바랍니다.
추가적으로 낭만 이라는 글자만 결과값에 출력되지 않고 한 문장 예를들면 낭만으로 시작되는 정규 표현식에 결과값은 "낭만코더" 이런식으로 검색되게 하기 위해서는 어떻게 해야 될지, 또 낭만이라는 글자가 끝에 오는 단어들은 어떻게 출력 시킬 수 있을지는 고민해 보시길 바랍니다.
regex = re.compile(r'^낭만\w+') <<< 낭만이라는 글자가 문자열 시작 부분에 나오는 단어
regex = re.compile(r'낭만\w+') <<< 낭만이라는 글자를 포함하는 단어
regex = re.compile(r'\w+낭만) <<< 낭만이라는 글자가 문자열 끝부분에 나오는 단어
regex = re.compile(r'\w+낭만') <<< 낭만이라는 글자가 단어의 뒤에 나오는 단어들
정규식에서 .글자(점)는 와일드카드라고 하며 줄바꿈을 제외한 모든 문자와 일치합니다.
import re
regex = re.compile(r'.만')
print(regex.findall('낭만코더, 두만, 원만, 천만, 태만, 포만')
결과값
['낭만', '두만', '원만', '천만', '태만', '포만']
모든 것을 일치 시킬 필요가 있는 경우도 있습니다.
import re
regex = re.compile(r'First Name: (.*) Last Name: (.*)')