TIL-017 | Python_정규 표현식-1 (Regular Expression)

5429 단어 TILpythonTIL

정규 표현식(Regular Expression)

  • 정규표현식은 특정한 규칙을 가진 문자열들의 집합을 표현하는 방법이다.
  • 따라서 복잡한 문자열을 처리할 때 편리하게 사용함으로써 코드의 효율성을 높여준다.
  • python 뿐만 아니라 모든 언어에서 공통으로 쓰인다.

정규표현식의 사용

  • python 에서는 're' 모듈을 사용하여 정규표현식을 사용하게 된다.
  • 're'모듈의 compile 함수를 이용하여 정규표현식 기호들로 구성된 패턴을 만들어 컴파일한다. p = re.compile('패턴')
  • re.compile의 결과로 돌려주는 객체 p를 이용해 이용해 문자열에서 원하는 작업을 수행하게된다. ex) m = p.match('패턴을 찾고자하는 문자열')
import re
p = re.compile('패턴')
m = p.match('문자열')

메타 문자(meta characters)

  • 메타 문자란, 문자의 본래 의미가 아닌 특별한 용도로 사용되는 문자를 뜻한다.
  • 메타 문자에는 . ^ $ * + ? {} [] | \ () 등이 있다.
  • 대표적으로 쓰이는 메타 문자로는 아래와 같이 있다.

문자열 검색 메소드

컴파일된 패턴 객체는 4가지 메소드를 제공한다.
    --> match(), search(), findall(), finditer()

  • match()
    match 메소드는 문자열의 처음부터 정규식과 매치되는지 확인한다.
import re
p = re.compile('[a-z]+') # +붙이는거 이해해야 한다. 
m = p.match("1 python")
print(m)  # None

👉 문자열 "1 python" 의 처음 문자 1 이 [a-z] 에 포함되지 않아 None 을 출력한다.


  • search()
    match()와 동일한 목적을 사용되지만 문자열의 처음부터 검색할지의 여부에 따라 다르게 사용된다.
import re
p = re.compile('[a-z]+')
m = p.search("1 python")
print(m)  # <re.Match object; span=(2, 8), match='python'>

👉 search는 문자열의 처음부터 검색하지 않고 문자열 전체를 검색한다.


  • findall()
import re
p = re.compile('[a-z]+')
string = p.findall("hello world")
print(string)  # ['hello', 'world']

👉 입력한 문자열을 정규표현식과 매치하여 리스트로 반환해 준다.


  • finditer()
import re
p = re.compile('[a-z]+')
string = p.finditer("hello world")
print(string)  # <callable_iterator object at 0x7fe150a74e80>

for r in string: print(r)  
#<re.Match object; span=(0, 5), match='hello'>
#<re.Match object; span=(6, 11), match='world'>

👉 findall과 동일한 동작을 수행한다. 다만, 반복 가능한 객체(iterator object)를 결과값으로 반환한다. 반환된 객체 내부의 요소들은 match 객체이다.

좋은 웹페이지 즐겨찾기