TIL-017 | Python_정규 표현식-1 (Regular Expression)
정규 표현식(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 객체이다.
Author And Source
이 문제에 관하여(TIL-017 | Python_정규 표현식-1 (Regular Expression)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@lck0827/TIL-016-Python정규-표현식Regular-Expression저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)