tool 공부/PYTHON

파이썬 정규식

Zziii 2023. 5. 10. 16:41
728x90
반응형

str.contains('?')를 사용했다가

 

의도대로 ? 를 포함한 문자가 출력이 안됨

 

str.contains('\?')

 

위와 같이 이스케이프 문자인 '\' 를 붙여줘야  의도대로 출력됨

 

이유는 '?' 문자가 정규식에서 0또는 1번의 앞의 패턴이 일치하는 문자열을 의미하기 때문에

 

예를들어 '2022.?' 를 쓴다면 2022.03.01과 같이 앞의 패턴이 일치하는 애들을 모두 가져오기 때문..

 

따라서 공부해보는 파이썬 정규식

 

're' 모듈을 사용하여 문자열 패턴을 찾거나 변경 가능

 

-gpt가 알려주는 기초 정규식

  • .: 어떤 한 개의 문자를 의미합니다.
  • *: 바로 앞 문자가 0개 이상인 패턴을 의미합니다.
  • +: 바로 앞 문자가 1개 이상인 패턴을 의미합니다.
  • ?: 바로 앞 문자가 0개 또는 1개인 패턴을 의미합니다.
  • |: or 연산자를 의미합니다.
  • ^: 문자열의 처음을 의미합니다.
  • $: 문자열의 끝을 의미합니다.
  • []: 문자 집합을 나타냅니다. 예를 들어, [abc]는 "a" 또는 "b" 또는 "c" 중 하나의 문자와 일치합니다.
  • [a-z]: 소문자 a부터 z까지 중 하나의 문자와 일치합니다.
  • [A-Z]: 대문자 A부터 Z까지 중 하나의 문자와 일치합니다.
  • [0-9]: 숫자 0부터 9까지 중 하나의 문자와 일치합니다.
  • \d: 숫자를 의미합니다. [0-9]와 같습니다.
  • \w: 숫자 또는 문자(알파벳)를 의미합니다.
  • \s: 공백 문자(스페이스, 탭 등)를 의미합니다.
  • \b: 단어의 경계를 의미합니다.

 

- 활용 예시 (숫자 추출)

import re

text = "My phone number is 010-1234-5678"

# 1개이상 반복되는 숫자
numbers = re.findall('\d+',text)

#['010','1234','5678'] 출력
print(numbers)

 

- 활용 예시 (이메일주소 추출)

import re

text = "My email address is john@example.com"

email = re.findall('[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}', text)

#['john@example.com'] 출력
print(email)

 

- 활용 예시 (특정 문자열 치환)

import re

text = "My phone number is 010-1234-5678"

#re.sub 활용 하나이상 반복되는 숫자 대체
new_text = re.sub('\d+','****',text)

# My phone number is ****-****-****  출력
print(new_text)
728x90
반응형
let textNodes = document.querySelectorAll("div.tt_article_useless_p_margin.contents_style > *:not(figure):not(pre)"); textNodes.forEach(function(a) { a.innerHTML = a.innerHTML.replace(/`(.*?)`/g, '$1'); });