PYTHON

[빅데이터 분석] 2022.01.03 정규표현식

죠으니 2022. 1. 3. 22:40

 

오랜만에 블로그를 쓰는군 ㅎㅎㅎ

새해 첫 블로그당!! 모두모두 행복한 2022년을 보냈으면 좋겠다

오늘은 정규표현식을 배웠다. 지난주에는 계속 실행하면서 복습을 했당

오늘 배운건 좀 재밌었다

크게 어렵지 않은 느낌..신기한 느낌이었당

 

 

<regex_programmers>

□ 정규표현식 regular expression  (패턴을 잘 찾는게 중요!)

▶정규표현식과 일치하는 부분을 모두 찾아주는 파이썬 코드

   result = re.findall(regex, search_target)
   result

▶re.findall() : 문자열 속에서 정규식과 매칭되는 것들을 모두 찾아 리스트로 반환해주는 함수

전화번호를 찾는 정규(표현)식 0\d{1,2}[ -]?\d{3,4}[ -]?\d{3,4}

0          : 숫자 0
\d{1,2}  : 숫자가 1개~2개
[ -]?      : 빈칸 또는 -가 0개~1개
           (전화번호를 그냥 빈칸없이 01020293930 이렇게 쭉쓰            는 사람도 있어서 0개 또는 1개다)
           []안에 빈칸이랑 -가 들어가 있음
\d{3,4}  : 0~9까지 숫자가 3개~4개
[ -]?      : 빈칸 또는 -가 0개~1개
\d{3,4} : 숫자가 3개~4개

▶ 숫자 하나씩만 추출하고 싶을때 \d

▶ 문자와 숫자들 중 하나씩 추출하고 싶을때 \w  [A-Za-z0-9]

▶하나 이상 추출할 때

 X+    : X가 무조건 출현, 한번 이상 출현
 \d+  : 숫자가 무조건 한 번 이상 출현

▶ *은 "0개 이상"이라는 뜻입니다. 
   따라서 \d*"숫자가 0개 이상이다"를 의미합니다. 
   이를 이용하면 자연수는 [1-9]\d*로 표현할 수 있습니다.

[1-9]   : 문자열은 무조건 1-9 사이 숫자로 시작한다.

▶-? : -가 0번 또는 1번 출현

[- ]?  : - 또는 공백이 0번 또는 1번 출현

\d{2,3}  : 숫자가 2개 또는 3개   (숫자 갯수 지정)

 

▶연속된 한글 단어를 찾을 때 [가-힣]+

▶\s : 공백 문자(스페이스, 탭, 뉴라인)
  \S : 공백 문자를 제외한 문자
  \d : 숫자
  \D : 숫자를 제외한 모든 문자           
  \w : alphanumeric(문자+숫자)
  \W : non-alphanumeric(문자 및 "_" 제외한 특수문자, 공백 등)

 

. : 임의의 문자 하나

▶regex = '...\.'         \뒤에 있는 것들은 문자 그대로를 뜻해서 맨뒤에 .이 있는 것들만 나오게 된다

▶regex = '[cmf]an'           cmf 중 아무거나가 나오고 뒤에 an이 나옴

▶regex = '[^drp]an'          ^를 붙이면 부정을 나타냄. dan, ran, pan빼고 추출된다.

▶regex = '[A-C][n-p][a-c]'   한자리씩 범위를 지정할 수 있다

['Ana', 'Bob', 'Cpc']

▶문자 갯수 범위를 이용한 추출 regex = 'waz{3,5}up'

search_target = 'wazzzzzup, wazzzup, wazup'  

['wazzzzzup', 'wazzzup']

☞  wazup는 z가 하나밖에 없어서 스킵된 것

regex = '\d+ files? found\?'   #files? 여기서 file까지는 그대로인데 s가 들어갈수도 있고 아닐수도 있다는 것
search_target = '1 file found?, 2 files found?, 24 files found?, No files found.'

s+ 공백 한개 이상이라는 뜻

regex = '\d\.\s+[a-z]+'

search_target = "'1. abc', '2.    abc', '3.       abc', '4.abc'"

['1. abc', '2.    abc', '3.       abc']

^...S : 문자열의 시작(^)과 끝($) 지정해서 문자 추출

regex = '^Mission: successful$'
search_target = "Mission: successful"

['Mission: successful']

.+ :  임의의 문자 아무거나 하나이상이 온다는 것

▶regex = 'I love (cats|dogs)'   cats 또는 dogs 있는 것만 추출