Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

예제가 있는 Python의 정규 표현식?

<시간/>

정규식은 주어진 문자 시퀀스(문자열)에 패턴이 존재하는지 여부를 식별하는 데 사용되는 일종의 프로그래밍 언어입니다.

정규식 또는 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='파이썬'>