강의로 돌아가기
notear0

regex 변수 선언 질문이요

regex 변수 앞에 r은 무슨 의미인가요??

작성중인 코드―regex1
1
2
3
4
5
6
7
8
9
10
11
12
# 따옴표(')로 둘러쌓인 부분에 원하는 정규표현식을 적습니다.
regex = r'0\d{1,2}[ -]?\d{3,4}[ -]?\d{3,4}'  # 전화번호를 찾는 정규표현식

# 주소록입니다. 이후 강의에서 모두 이 search_target을 사용합니다.
search_target = '''Luke Skywarker 02-123-4567 luke@daum.net
다스베이더 070-9999-9999 darth_vader@gmail.com
princess leia 010 2454 3457 leia@gmail.com'''

# 정규표현식과 일치하는 부분을 모두 찾아주는 파이썬 코드입니다.
import re
result = re.findall(regex, search_target)
print("\n".join(result))
2 개의 답변
프로그래머스

prefix r은 특별히 정규표현식과 관련된건 아닙니다. 정규표현식 뿐만 아니라 일반 스트링에서도 쓸 수 있어요.
다만 일반적인 스트링형과는 다른 결과를 보일 때가 있습니다.
다음 코드를 실행해보세요

print('this is \n a test')
print(r'this is \n a test')
김가람

r은 Raw String의 약어로 마찬가지로 정규표현식입니다.
예를 들어
\sub
라는 문자열을 찾고싶다고 할때 백슬래시까지 포함하기 위해서는 일반적으로
\\sub
라고 표현해야하지만
파이썬에서는 '\\' 가 원화 표시로 다시 변경되기 때문에
\\\\sub
라고 표현하는 어려움이 생기게 되었습니다
다만 이렇게 표현하면 너무 표현식이 어려워지기 때문에
regex = '\\\\sub' 를
regex = r'\\sub'
라고 사용합니다. 파이썬에만 해당됩니다

백슬래시를 사용하지 않는 정규표현식이라면 r 의 유무에 상관없이 동일한 결과를 얻을 수 있습니다

답변 쓰기
이 입력폼은 마크다운 문법을 지원합니다. 마크다운 가이드 를 참고하세요.