정규식은 주어진 문자 시퀀스(문자열)에 패턴이 존재하는지 여부를 식별하는 데 사용되는 일종의 프로그래밍 언어입니다.
정규식 또는 Regex는 문자열에 지정된 검색 패턴이 포함되어 있는지 확인하는 데 사용되는 일련의 문자입니다.
정규식 모듈
RegEx 모듈을 사용하기 위해 파이썬에는 re라는 내장 패키지가 제공되며 정규 표현식으로 작업해야 합니다. RegEx 모듈을 사용하려면 모듈을 다시 가져오기만 하면 됩니다.
다시 가져오기
예
import retxt ="기계 학습에서 파이썬 사용"x =re.search("^Use.*Learning$", txt)if (x):print("예! 일치합니다!")else:print("일치하지 않습니다")
출력
<예>예! 경기가 있습니다!정규식 함수
re 모듈은 일치하는 문자열을 검색할 수 있는 몇 가지 기능을 제공합니다.
기능 | 설명 |
---|---|
findall | 모든 일치 항목을 포함하는 목록을 반환합니다. |
검색 | 문자열에서 일치하는 항목이 발견되면 Match 개체를 반환합니다. |
분할 | 각 수학에서 문자열이 분할된 목록을 반환합니다. |
서브 | 하나 이상의 일치 항목을 문자열로 바꿉니다. |
메타 문자
RegEx의 메타 문자는 특별한 의미를 가진 문자입니다.
문자 | 설명 | 예 |
---|---|---|
[] | 문자 집합 | “[오전]” |
\ | 특수 문자를 이스케이프하는 데에도 사용되는 특수 시퀀스에 신호를 보냅니다. | “\d” |
. | 개행 문자를 제외한 모든 문자 | "그..오" |
^ | 로 시작 | “^안녕하세요” |
$ | 로 끝남 | “세계$” |
* | 0회 이상 발생 | “aix*” |
+ | 하나 이상의 발생 | “aix+” |
{} | 정확히 지정된 발생 횟수 | "a|{2}" |
| | 또는 | "짧은|긴" |
() | 캡처 및 그룹화 | |
특수 시퀀스
RegEx의 특수 시퀀스는 \ 다음에 아래 나열된 문자 중 하나가 오고 특별한 의미를 갖습니다. -
문자 | 설명 | 예 |
---|---|---|
\A | 지정된 문자가 문자열의 시작 부분에 있는 경우 일치 항목을 반환합니다. | "\APyt" |
\b | 지정된 문자가 단어의 시작 또는 끝에 있는 경우 일치 항목을 반환합니다. | r”\b파이썬” r”세계\b” |
\B | 지정된 문자가 있지만 단어의 시작(또는 끝)이 아닌 경우 일치 항목을 반환합니다. | r”\BPython” r”세계\B” |
\d | 문자열에 숫자가 포함된 경우 일치 항목을 반환합니다. | "\d" |
\D | 문자열에 숫자가 포함되지 않은 경우 일치 항목을 반환합니다. | “\D” |
\s | 문자열에 공백 문자가 포함된 일치 항목을 반환합니다. | "\s" |
\S | 문자열에 공백 문자가 포함되지 않은 일치 항목을 반환합니다. | “\S” |
\w | 문자열에 단어 문자가 포함된 경우 일치 항목을 반환합니다(문자는 a에서 Z까지의 문자, 0-9의 숫자, 밑줄 _ 문자일 수 있음). | "\w" |
\W | 문자열에 단어 문자가 포함되지 않은 일치 항목을 반환합니다. | “\W” |
\Z | 지정된 문자가 문자열 끝에 있으면 일치 항목을 반환합니다. | “세계\Z” |
세트
RegEx의 집합은 특별한 의미를 가진 한 쌍의 대괄호 [] 안에 있는 문자 집합입니다.
세트 | 설명 |
---|---|
[라지] | 지정된 문자(a, r 또는 n) 중 하나가 있는 경우 일치 항목을 반환합니다. |
[a-r] | 알파벳 순으로 소문자와 r 사이의 일치 항목을 반환합니다. |
[^raj] | r, a 및 j를 제외한 모든 문자에 대한 일치 항목을 반환합니다. |
[0123] | spe 중 하나라도 일치하는 경우를 반환합니다. |
[0-9] | 0과 9 사이의 모든 숫자에 대한 일치를 반환합니다. |
[0-3][0-8] | 00에서 38 사이의 두 자리 숫자에 대한 일치 항목을 반환합니다. |
[a-zA-Z] | 알파벳 순으로 z 또는 A ~ Z 사이의 모든 문자에 대한 일치 항목을 반환합니다. |
[+] | 문자열의 모든 + 문자에 대한 일치를 반환합니다. |
예 - findall()
findall() 함수는 모든 일치 항목이 포함된 목록을 반환합니다.
#textimport에서 모든 일치 항목("in")의 목록을 인쇄합니다. retxt ="기계 학습에서 파이썬 사용"x =re.findall("in", txt)print(x)
출력
['안', '안', '안']
위의 출력 표시 목록에는 찾은 순서대로 모든 일치 항목이 포함되어 있습니다. 그러나 일치하는 항목이 없으면 빈 목록이 표시됩니다.
위 프로그램에서 텍스트나 문자열에 없는 "pattern" 줄을 변경하기만 하면 됩니다.
x =re.findall("안녕하세요", txt)
출력
[]
예 - search() 함수
search() 함수는 문자열을 검색하고 일치하는 항목이 있으면 일치 개체를 반환합니다.
그러나 두 개 이상의 일치 항목이 있는 경우 일치 항목의 첫 번째 항목만 반환됩니다.
import retxt ="Python은 전 세계에서 가장 인기 있는 언어 중 하나입니다."searchObj =re.search("\s", txt)print("첫 번째 공백 문자는 다음 위치에 있습니다:", searchObj. 시작())
출력
첫 번째 공백 문자는 6 위치에 있습니다.
그러나 일치하는 항목이 없으면 없음이 반환됩니다.
예 - split() 함수
RegEx의 split() 함수는 일치할 때마다 문자열이 분할된 목록을 반환합니다. -
# 공백 문자마다 분할 import restring ="Python은 전 세계에서 가장 인기 있는 언어 중 하나입니다."searchObj =re.split("\s", string)print(searchObj)
결과
['파이썬', 'is', '하나', 'of', 'the', '대부분', '인기', '언어', '주변', 'the', '세계']사전>예 - sub() 함수
RegEx의 sub() 함수는 일치 항목을 선택한 텍스트로 바꾸는 것입니다.
#문자열의 모든 공백을 _:import restring ="Python은 전 세계에서 가장 인기 있는 언어 중 하나입니다."searchObj =re.sub("\s", "_", string)print( searchObj)결과
Python_is_one_of_the_most_popular_language_around_the_world매칭 개체
RegEx의 일치 개체는 검색 및 결과에 대한 정보를 포함하는 개체입니다. 일치하는 항목이 없으면 None이 반환됩니다.
예시 - 문자열을 검색하고 일치 개체를 반환합니다.
import restring ="Python은 전 세계에서 가장 인기 있는 언어 중 하나입니다."searchObj =re.search("on", string)print(searchObj)결과
<_sre.SRE_Match 개체; span=(4, 6), match='on'>일치 개체에는 검색 및 결과에 대한 정보를 검색하는 데 사용되는 속성과 메서드가 있습니다.
-
.span() – 찾은 일치 항목의 시작 및 끝 위치를 포함하는 튜플을 반환합니다.
-
.문자열 – 함수에 전달된 문자열을 반환합니다.
-
.그룹() – 문자열에서 일치하는 부분을 반환합니다.
예시 - 문자열에서 일치하는 부분을 인쇄합니다.
#대문자 "P"로 시작하는 단어 검색:import restring ="Python은 전 세계에서 가장 인기 있는 언어 중 하나입니다."searchObj =re.search(r"\bP\w+", string )인쇄(searchObj)
결과
<_sre.SRE_Match 개체; span=(0, 6), match='파이썬'>