Acdong
Learn by doing
Acdong
전체 방문자
오늘
어제
  • 분류 전체보기
    • Economy
      • Saving Money
    • Self-improvement
    • Thoughts
    • Machine learning
      • Deep Learning
      • Chatbot
      • NLP
    • MLops
      • AWS
      • Container
      • Serving
    • Computer Vision
    • Data Science
      • ADsP
      • R
    • Project
    • Python
      • Data Structure & Algorithm
    • C,C++
    • API
      • ElasticSearch
    • Error Note
    • Network
    • RDBMS
      • SQL

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • [GitHub]

인기 글

태그

  • 회귀계수
  • c포인터
  • 데이터 전처리
  • 포인터
  • R시각화
  • 기계학습
  • 다중공선성
  • nlp
  • 머신러닝
  • pandas
  • 이미지 전처리
  • R그래프
  • Numpy
  • Python
  • SentenceTransformer
  • 어텐션
  • plot()
  • 존댓말 반말 분류
  • sbert
  • R

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Acdong

Learn by doing

Python

[Python] 정규 표현식 예제 실습 ( compile , search )

2020. 11. 16. 17:00
728x90

1) .기호

.은 한 개의 임의의 문자를 나타냅니다.

예를 들어서 정규 표현식이 a.c라고 합시다.

a와 c 사이에는 어떤 1개의 문자라도 올 수 있습니다.

즉, akc, azc, avc, a5c, a!c와 같은 형태는 모두 a.c의 정규 표현식과 매치됩니다.

import re
r=re.compile("a.c")
r.search("kkk") # 아무런 결과도 출력되지 않는다.
r.search("abc")
<_sre.SRE_Match object; span=(0, 3), match='abc'>  

(.)은 어떤 문자로도 인식될 수 있기 때문에

abc라는 문자열은 a.c라는 정규 표현식 패턴으로 매치되는 것을 볼 수 있습니다.

 


2) ?기호

?는 ? 앞의 문자가 존재할 수도 있고, 존재하지 않을 수도 있는 경우를 나타냅니다.

예를 들어서 정규 표현식이 ab?c라고 합시다.

이 경우 이 정규 표현식에서의 b는 있다고 취급할 수도 있고, 없다고 취급할 수도 있습니다.

즉, abc와 ac 모두 매치할 수 있습니다.

import re
r=re.compile("ab?c")
r.search("abbc") # 아무런 결과도 출력되지 않는다.
r.search("abc")
<_sre.SRE_Match object; span=(0, 3), match='abc'>  

b가 있는 것으로 판단하여 abc를 매치하는 것을 볼 수 있습니다.

r.search("ac")
<_sre.SRE_Match object; span=(0, 2), match='ac'>  

re.match() 와 re.search()의 차이

search()가 정규 표현식 전체에 대해서 문자열이 매치하는지를 본다면,

match()는 문자열의 첫 부분부터 정규 표현식과 매치하는지를 확인합니다.

문자열 중간에 찾을 패턴이 있다고 하더라도, match 함수는 문자열의 시작에서 패턴이 일치하지 않으면 찾지 않습니다.

import re
r=re.compile("ab.")
r.search("kkkabc")
<_sre.SRE_Match object; span=(3, 6), match='abc'>
r.match("kkkabc")  #아무런 결과도 출력되지 않는다.
r.match("abckkk")
<_sre.SRE_Match object; span=(0, 3), match='abc'>

re.split()

split() 함수는 입력된 정규 표현식을 기준으로 문자열들을 분리하여 리스트로 리턴합니다.

import re
text="사과 딸기 수박 메론 바나나"
re.split(" ",text)
['사과', '딸기', '수박', '메론', '바나나']  

 

re.findall()

findall() 함수는 정규 표현식과 매치되는 모든 문자열들을 리스트로 리턴합니다.

단, 매치되는 문자열이 없다면 빈 리스트를 리턴합니다.

import re
text="이름 : 김철수
전화번호 : 010 - 1234 - 1234
나이 : 30
성별 : 남"""  
re.findall("\d+",text)
['010', '1234', '1234', '30']

 

출처 : wikidocs.net/21703

반응형
저작자표시 비영리 (새창열림)

'Python' 카테고리의 다른 글

[pandas]. 사용자의 합계를 구해서 칼럼 추가하기 (feat. groupBy)  (0) 2021.10.27
[Flask].이미지 데이터를 post 형식으로 flask 서버로 보내는 방법( 이상한 트릭)  (0) 2020.12.03
[Python] . 정규표현식 총정리!! ( re , Regular Expression )  (0) 2020.11.16
[Pandas] . DataFrame 생성, 삭제 ,추출  (0) 2020.10.15
[Python] List Comprehension 으로 matrix 다루기  (0) 2020.10.09
    'Python' 카테고리의 다른 글
    • [pandas]. 사용자의 합계를 구해서 칼럼 추가하기 (feat. groupBy)
    • [Flask].이미지 데이터를 post 형식으로 flask 서버로 보내는 방법( 이상한 트릭)
    • [Python] . 정규표현식 총정리!! ( re , Regular Expression )
    • [Pandas] . DataFrame 생성, 삭제 ,추출
    Acdong
    Acdong
    E-mail : alswhddh@naver.com / 자연어처리와 MLops 를 연구하고 있는 스타트업 개발자입니다.

    티스토리툴바