상세 컨텐츠

본문 제목

[개미의 걸음 Python 12차시] ★ 정규표현식[Regular Expression] ★

Python

by IT개미 데이터 2020. 7. 12. 23:23

본문

728x90

정규표현식[Regular Expression]

문자열의 비교나 처리를 위해 사용하는 특수기호 표현식

  • 즉, 정규 표현식은 특수 목적을 위해 필요한 문자열 집합을 지정하기 위해 사용하는 식
  • 정규표현식을 표현하기 위해 메타문자[Meta Character]를 사용
  • re모듈을 통해 정규 표현식을 사용

주요 re모듈 함수

re.compile(검색할 문자열) 정규표현식 혹은 찾는 문자들을 정규식 객체[re.RegexObject 클래스 객체]로 반환하는데 사용하는 함수

 

주요 검색 함수

match( ) 문자열의 시작 부분이 정규식과 매치되는지 조사
즉, 문자열 중간에 정규식과 일치하는 패턴이 있더라도 출력되지 않음
search( ) 문자열의 시작 부분부터 정규식과 매치되는지 조사
단, 정규식과 매칭되는 패턴이 나타나면 더 이상 검사하지 않음
findall( ) 문자열의 시작 부분부터 정규식과 매치되는지 조사
정규식과 매치되는 문자열들을 리스트로 반환
finditer( ) 정규식과 매치되는 문자열들을 반복 가능한 객체로 반환

 

인덱스 및 값을 나타내는 함수

start( ) 매치된 문자열의 시작 위치를 리턴
end( ) 매치된 문자열의 끝 위치를 리턴
span( ) 매치된 문자열의 (시작위치, 끝 위치)를 리턴
튜플 형태로 리턴됨!
group( ) 매치된 문자열을 리턴

 

 

 

메타문자

다른 문자의 정보를 전달하기 위하여 프로그램이나 데이터에 끼워 넣는 문자

   ① ^   $

^로 정규표현식을 시작해서 $로 끝나도록 한다.

 

   ② [ ]

[ ]안에 들어있는 문자와 매칭되는 모든 문자를 출력하는 것으로 문자클래스라고 함

연속된 문자나 숫자의 경우 '-'를 사용하면 간단하게 표기 가능

정규표현식 설    명
[abcd], [a-d] 문자열에서 지정한 문자들에 해당하는 것들을 하나씩 추출하여 리스트를 생성
[^ABCD], [A-D] 문자열에서 지정한 문자들이 아닌 것들을 하나씩 추출하여 리스트를 생성
[A-Z] 문자열에서 A~Z 에 해당하는 것들을 하나씩 추출하여 리스트를 생성
[a-z] 문자열에서 a-z 에 해당하는 것들을 하나씩 추출하여 리스트를 생성
[가~힣] 문자열에서 가~힣 사이, 즉 한글에 해당하는 것들을 하나씩 추출하여 리스트를 생성
[0~9] 문자열에서 0~9사이에 해당하는 것들을 하나씩 추출하여 리스트를 생성

 

자주 사용하는 문자클래스는 별도 표기법을 통해 간편하게 사용 가능!

별도 표기법 정규 표현식 설    명
\d [0-9] 문자열에서 0~9사이에 해당하는 것들을 하나씩 추출하여 리스트를 생성
\D [^0-9] 문자열에서 0~9사이에 해당하지 않는 것들을 하나씩 추출하여 리스트를 생성
\s [\t\n\r\f\v] 문자열에서 공백문자[whitespace]를 하나씩 추출하여 리스트를 생성
\S [^\t\n\r\f\v] 문자열에서 공백문자[whitespace]가 아닌 것들을 하나씩 추출하여 리스트 생성
\w [a-zA-Z가-힣0-9] 문자열에서 문자나 숫자들을 하나씩 추출하여 리스트 생성
\W [^a-zA-Z가-힣0-9] 문자열에서 문자와 숫자가 아닌 것들을 하나씩 추출하여 리스트 생성 

 

   ③ .

줄바꿈 문자인 \n을 제외한 모든 문자 중 하나와 매칭

  • findall함수를 사용했으므로 문자열 간에 겹치지 않고 출력됨!

 

   ④ *

문자열에서 바로 앞의 패턴[지정 문자나 메타문자]이 0번 이상 반복되는 것들을 하나씩 추출하여 리스트 생성

앞의 메타문자에 속하는 글자라면 길이와 상관없이 계속 출력됨!

바로 앞의 메티문자에 속하는 글자가 없다면 공백 혹은 출력되지 않음

 

   ⑤ ?

문자열에서 바로 앞의 패턴[지정 문자나 메타문자]이 0~1번 반복되는 것들을 하나씩 추출하여 리스트 생성

  • '*'를 사용했을 때는 반복되는 모든 문자열이 출력되었지만 '?'를 사용했을 때는 0~1번으로 제한되어 출력됨!

 

   ⑥ +

문자열에서 바로 앞의 패턴[지정 문자나 메타문자]이 1번 이상 반복되는 것들을 하나씩 추출하여 리스트 생성

 

   ⑦ |

문자열에서 바로 앞이나 뒤의 패턴[지정 문자나 메타문자]들을 하나씩 추출하여 리스트 생성

( | )나 [ , ]가 동일하기 때문에 개인적으로는 거의 사용안함

  • 밑의 두개는 다른 값이 출력되었는데 \s, \S로 서로 다르기 때문에 다른 값이 출력된 것입니다.

 

   ⑧ { }

문자열에서 { }안의 숫자만큼 반복되는 것들을 찾아서 리스트를 생성

패턴{a} 문자열에서 패턴이 a번 반복되는 것들을 추출하여 리스트를 생성
패턴{a,b} 문자열에서 패턴이 a번 이상 b번 이하 반복되는 것들을 추출하여 리스트를 생성

 

   ⑨ \\b

문자열에서 해당 단어를 찾아서 리스트를 생성[단어에 포함되어 있는 패턴은 추출하지 않음]

해당 단어가 어느정도 사용되었는지 확인할 때 유용

  

 

   ⑩ \\B

문자열에서 해당 패턴을 찾아서 리스트를 생성[단어는 추출하지 않음!]

 

 

 

 

 

 

정규표현식의 활용

 ① 이름

 

 

② 전화번호

 

 

③ 이메일

 

 

 ④ 시간

 

 

 

 

 

 

 

 

728x90

관련글 더보기

댓글 영역