programmers : 정규표현식 Part 3. 횟수 정하기(Quantifier)

SOOYEON·2022년 12월 13일
0

정규표현식

목록 보기
3/4

있거나 없거나?(1)

?

?는 '있거나 없거나'라는 뜻입니다. 따라서 -?는 "-가 있거나 없다"를 의미합니다.

  • 전화번호는 "-"을 포함하거나, 포함하지 않을 수 있다.
  • 전화번호는 연속되는 숫자 3 ~ 4개 사이에 -가 있거나 없다고 표현할 수 있다.
regex = r'\d+-?\d+-?\d+'

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'''

# test
import re
result=re.findall(regex,search_target)
print(result)

있거나 없거나?(2)

모든 전화번호를 찾으려면

  • "-가 있거나 없다"는 조건이 아니라
  • "- 또는 공백이 있거나 없다"는 조건을 써야 한다.

"010 2454 3457"과 같이 공백이 포함된 전화번호를 찾기 위해

  • 또는 (공백)이 있거나 없다는 조건은 [- ]?로 표현할 수 있다.
regex = r'\d+[- ]?\d+[- ]?\d+'

+ n번(1)

regex = r'\d+[- ]?\d+[- ]?\d+'

search_target = '''이상한 전화번호 0030589-5-95826
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(result)

"0030589-5-95826"과 같이 연결된 숫자가 너무 많은 문자열도 전화번호라고 인식


n번(2)

{숫자}는 "숫자번 반복한다"는 뜻

regex = r'\d{2}[- ]?\d{3}[- ]?\d{4}'

n~m번

{숫자1, 숫자2}는 "숫자1부터 숫자2까지 반복한다"는 뜻
ex) \w{2,3} : "문자가 2 ~ 3번 나온다"는 뜻

자리 수
처음2 ~ 3자리
가운데3 ~ 4자리
마지막4자리
regex = r'\d{2,3}[- ]?\d{3,4}[- ]?\d{4}'

0개의 댓글