Python 정규식

Nov 23, 2016 pm 02:07 PM
python

정규식은 문자열이 특정 패턴과 일치하는지 쉽게 확인하는 데 도움이 되는 특수 문자 시퀀스입니다. Python은 버전 1.5부터 Perl 스타일 정규식 패턴을 제공하는 re 모듈을 추가했습니다.

re 모듈은 Python 언어에 완전한 정규식 기능을 제공합니다.

컴파일 함수는 패턴 문자열과 선택적 플래그 인수를 기반으로 정규식 개체를 생성합니다. 이 객체에는 정규식 일치 및 교체를 위한 일련의 메서드가 있습니다.

re 모듈은 패턴 문자열을 첫 번째 인수로 사용하는 이러한 메서드와 동일한 함수도 제공합니다.

이 장에서는 Python에서 일반적으로 사용되는 정규식 처리 함수를 주로 소개합니다.

re.match 함수

re.match는 문자열의 시작 부분부터 패턴을 일치시키려고 시도합니다.

함수 구문:

re.match(pattern, string, flags=0)

함수 매개변수 설명:

매개변수

설명

정규 표현식과 일치하는 패턴

string 일치시킬 문자열입니다.

flags 플래그는 대소문자 구분, 여러 줄 일치 등 정규식의 일치 방법을 제어하는 ​​데 사용됩니다.

re.match 메소드는 일치에 성공하면 일치하는 객체를 반환하고, 그렇지 않으면 None을 반환합니다.

group(num) 또는 groups() 일치 개체 함수를 사용하여 일치하는 표현식을 얻을 수 있습니다.

매칭 객체 방식

설명

group(num=0) 전체 표현식이 일치하는 문자열, group( )는 한 번에 여러 그룹 번호를 입력할 수 있으며, 이 경우 해당 그룹에 해당하는 값이 포함된 튜플을 반환합니다.

groups() 1부터 에 포함된 그룹 번호까지 모든 그룹 문자열을 포함하는 튜플을 반환합니다.

인스턴스:

#!/usr/bin/python

다시 가져오기

line = "고양이는 개보다 똑똑하다"

matchObj = re.match( r'(.*) are (.*?) .*', line, re .M|re.I)

if matchObj:

print "matchObj.group() : ", matchObj.group()

print "matchObj.group(1) : ", matchObj.group(1)

인쇄 "matchObj.group(2) : ", matchObj.group(2)

else:

print "No match!!"

위 예제의 실행 결과는 다음과 같습니다.

matchObj.group() : 고양이는 개보다 똑똑합니다

matchObj.group(1) : 고양이

matchObj.group(2) : 더 똑똑합니다

re.search 방법

re.match는 문자열의 시작 부분부터 패턴을 일치시키려고 시도합니다.

함수 구문:

re.search(pattern, string, flags=0)

함수 매개변수 설명:

매개변수

설명

정규 표현식과 일치하는 패턴

string 일치시킬 문자열입니다.

flags 플래그는 대소문자 구분, 여러 줄 일치 등 정규식의 일치 방법을 제어하는 ​​데 사용됩니다.

일치에 성공하면 re.search 메서드는 일치하는 객체를 반환하고, 그렇지 않으면 None을 반환합니다.

group(num) 또는 groups() 일치 개체 함수를 사용하여 일치하는 표현식을 얻을 수 있습니다.

매칭 객체 방식

설명

group(num=0) 전체 표현식이 일치하는 문자열, group( )는 한 번에 여러 그룹 번호를 입력할 수 있으며, 이 경우 해당 그룹에 해당하는 값이 포함된 튜플을 반환합니다.

groups() 1부터 에 포함된 그룹 번호까지 모든 그룹 문자열을 포함하는 튜플을 반환합니다.

인스턴스:

#!/usr/bin/python

다시 가져오기

line = "고양이는 개보다 똑똑하다";

matchObj = re.match( r'(.*)는 (.*?) .*', line, re.M|re.I)

if matchObj:

print "matchObj.group() : ", matchObj.group()

print "matchObj.group(1) : ", matchObj.group(1)

print "matchObj.group(2) : ", matchObj.group(2)

else:

print "No match!!"

위 예제의 실행 결과는 다음과 같습니다.

matchObj.group() : 고양이는 개보다 똑똑합니다

matchObj.group(1) : 고양이

matchObj.group(2) : 더 똑똑합니다

re.match와 re.search의 차이점

re.match는 문자열의 시작 부분만 일치합니다. 문자열의 시작 부분이 정규 표현식과 일치하지 않으면 일치가 실패하고 함수는 일치 항목을 찾을 때까지 전체 문자열을 일치시킵니다.

인스턴스:

#!/usr/bin/python

다시 가져오기

line = "고양이는 개보다 똑똑하다";

matchObj = re.match( r'dogs', line, re.M|re.I)

if matchObj:

print "match --> matchObj.group() : ", matchObj.group()

else:

print "일치하지 않음 !!"

matchObj = re.search( r'dogs', line, re.M|re.I)

if matchObj:

print "search --> matchObj.group() : ", matchObj.group()

else:

print "일치하지 않음!!"

위의 예시 실행 결과는 다음과 같습니다.

일치하지 않습니다!!

검색 -- > matchObj .group() : dogs

검색 및 교체

Python의 re 모듈은 문자열 항목에서 일치 항목을 교체하기 위한 re.sub를 제공합니다.

구문:

re.sub(pattern, repl, string, max=0)

반환된 문자열은 문자열에서 가장 왼쪽의 반복되지 않는 RE 일치 항목으로 대체됩니다. 패턴을 찾을 수 없으면 문자는 변경되지 않은 채 반환됩니다.

선택적 매개변수 count는 패턴 일치 후 최대 대체 수입니다. count는 음수가 아닌 정수여야 합니다. 기본값은 모든 일치 항목을 바꾸는 0입니다.

인스턴스:

#!/usr/bin/python

다시 가져오기

phone = "2004-959-559 # 전화번호입니다"

# Python 스타일 댓글 삭제

num = re.sub(r' #.*$', "", 전화)

print "Phone Num : ", num

# 숫자 이외의 모든 항목 제거

num = re.sub(r'D', "",phone)

print "Phone Num : ", num

위의 예 실행 결과는 다음과 같습니다.

전화번호 : 2004-959-559

전화번호 : 2004959559

정규식 수정자 - 선택적 플래그

정규식에는 일치하는 패턴을 제어하기 위한 여러 선택적 플래그 수정자가 포함될 수 있습니다. 수정자는 선택적 플래그로 지정됩니다. 여러 플래그는 비트별 OR(|)로 지정할 수 있습니다. 예를 들어 re.I | re.M은 I 및 M 플래그로 설정됩니다.

Modifier

Description

re .I 대소문자를 구분하지 않는 일치

re.L 로케일 인식 일치

re.M ^ 및 $에 영향을 미치는 여러 줄 일치

re.S 원인 . 개행 문자를 포함한 모든 문자와 일치합니다.

re.U는 유니코드 문자 집합에 따라 문자를 구문 분석합니다. 이 플래그는 w, W, b, B에 영향을 미칩니다.

re.X 이 플래그를 사용하면 보다 유연한 형식을 제공하여 정규식 작성을 더 쉽게 이해할 수 있습니다.

정규 표현식 패턴

패턴 문자열은 특수 구문을 사용하여 정규 표현식을 나타냅니다.

문자와 숫자는 그 자신을 나타냅니다. 정규식 패턴의 문자와 숫자는 동일한 문자열과 일치합니다.

대부분의 문자와 숫자 앞에 백슬래시가 있으면 다른 의미를 갖습니다.

구두점은 이스케이프된 경우에만 일치하며, 그렇지 않은 경우에는 특별한 의미를 나타냅니다.

백슬래시 자체는 백슬래시로 이스케이프 처리해야 합니다.

정규식에는 일반적으로 백슬래시가 포함되므로 원시 문자열을 사용하여 이를 표현하는 것이 좋습니다. 패턴 요소(예: '//t'에 해당하는 r'/t')는 해당 특수 문자와 일치합니다.

다음 표에는 정규식 패턴 구문의 특수 요소가 나열되어 있습니다. 패턴을 사용하고 선택적 플래그 인수를 제공하면 일부 패턴 요소의 의미가 변경됩니다.

패턴

설명

^ 문자열의 시작과 일치

$ 문자열의 끝과 일치 문자열 .

. re.DOTALL 플래그가 지정되면 개행 문자를 제외한 모든 문자와 일치합니다.

[...] 별도로 나열된 문자 그룹을 나타내는 데 사용됩니다. [amk]는 'a', 'm' 또는 'k'와 일치합니다.

[^...] Not []의 사용 가능한 문자: [^abc]는 a, b, c를 제외한 문자와 일치합니다.

re* 0개 이상의 표현식과 일치합니다.

re+ 하나 이상의 표현식과 일치합니다.

re? 이전 정규 표현식으로 정의된 0 또는 1개의 조각과 일치, 탐욕 모드

re{ n}

re{ n,} n 이전 표현식 모드와 정확히 일치합니다.

re{ n, m} 이전 정규식으로 정의된 n에서 m번의 조각과 일치, 욕심 많은 방식

a| b a 또는 b 일치

(re ) G 괄호 안의 표현식과 일치하며 그룹

(?imx)도 나타냅니다. 정규식에는 i, m 또는 x의 세 가지 선택적 플래그가 포함되어 있습니다. 괄호 안의 영역에만 영향을 미칩니다.

(?-imx) i, m 또는 x 선택적 플래그를 끄는 정규식입니다. 괄호 안의 영역에만 영향을 미칩니다.

(?: re) (...)와 유사하지만 그룹을 나타내지 않습니다.

(?imx: re) 괄호 안에 i, m 또는 x 선택적 플래그 사용

(?-imx: re) 괄호 안에 i, m, x 선택적 플래그를 사용하지 마세요.

(?#...) 댓글

(?= re ) 앞으로 양수 구분 기호. ... 로 표시된 포함된 정규식이 현재 위치와 성공적으로 일치하면 성공하고, 그렇지 않으면 실패합니다. 그러나 포함된 표현식을 시도한 후에는 일치 엔진이 전혀 개선되지 않으며 패턴의 나머지 부분은 여전히 ​​구분 기호의 오른쪽을 시도해야 합니다.

(?! re) 음수 구분 기호를 전달합니다. 양수 구분 기호와는 반대로, 포함된 표현식이 문자열의 현재 위치에서 일치할 수 없으면 성공합니다.

(?> re) 독립적인 패턴과 일치하여 역추적을 제거합니다.

w는 영숫자 문자와 일치합니다.

W는 영숫자가 아닌 문자와 일치합니다.

s는 모든 공백 문자와 일치합니다.

S는 모든 공백 문자와 일치합니다. - 영숫자 문자

d는 [0-9]에 해당하는 모든 숫자와 일치합니다.

D는 숫자가 아닌 모든 것과 일치합니다.

A는 문자열의 시작 부분과 일치합니다.

Z는 문자열의 끝과 일치합니다. 줄 바꿈이 있는 경우 줄 바꿈 이전의 문자열 끝만 일치합니다. c

z 문자열의 끝을 일치

G 마지막 일치가 완료된 위치를 일치시킵니다.

b 단어와 공백 사이의 위치를 ​​나타내는 단어 경계와 일치합니다. 예를 들어, 'erb'는 "never"의 'er'와 일치하지만 "동사"의 'er'와는 일치하지 않습니다.

B 비단어 경계와 일치합니다. 'erB'는 "동사"의 'er'와 일치하지만 "never"에서는 일치하지 않습니다.

n, t 등. 개행 문자와 일치합니다. 탭 문자와 일치합니다.

1...9는 n번째 그룹의 하위 표현식과 일치합니다.

10 일치하는 경우 n번째 그룹의 하위 표현식과 일치합니다. 그렇지 않으면 8진 문자 코드의 표현을 참조합니다.

정규식 예

문자 일치

설명

python "python"과 일치합니다.

문자 클래스

인스턴스

설명

[Pp]ython 일치 "Python" 또는 "python"

rub[ye] "ruby" 또는 "rube"와 일치

[aeiou] 대괄호 안의 문자와 일치

[ 0- 9]는 모든 숫자와 일치합니다. [0123456789]

[a-z] 모든 소문자와 일치

[A-Z] 모든 대문자와 일치

[a-zA-Z0-9] 모든 문자 및 숫자

[^aeiou] aeiou 문자를 제외한 모든 문자

[^0-9] 숫자를 제외한 문자와 일치

특수문자 클래스

인스턴스

설명

. "n"을 제외한 모든 단일 문자와 일치합니다. 'n'을 포함한 모든 문자를 일치시키려면 '[.n]'과 같은 패턴을 사용하십시오.

d는 숫자와 일치합니다. [0-9]와 동일합니다.

D는 숫자가 아닌 문자와 일치합니다. [^0-9]와 동일합니다.

s는 공백, 탭, 폼 피드 등을 포함한 모든 공백 문자와 일치합니다. [fnrtv]와 동일합니다.

S는 공백이 아닌 모든 문자와 일치합니다. [^ fnrtv]와 동일합니다.

w 밑줄을 포함한 모든 단어 문자와 일치합니다. '[A-Za-z0-9_]'와 동일합니다.

W는 단어가 아닌 문자와 일치합니다. '[^A-Za-z0-9_]'와 동일합니다.


본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. 크로스 플레이가 있습니까?
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

PHP 및 Python : 코드 예제 및 비교 PHP 및 Python : 코드 예제 및 비교 Apr 15, 2025 am 12:07 AM

PHP와 Python은 고유 한 장점과 단점이 있으며 선택은 프로젝트 요구와 개인 선호도에 달려 있습니다. 1.PHP는 대규모 웹 애플리케이션의 빠른 개발 및 유지 보수에 적합합니다. 2. Python은 데이터 과학 및 기계 학습 분야를 지배합니다.

Python vs. JavaScript : 커뮤니티, 라이브러리 및 리소스 Python vs. JavaScript : 커뮤니티, 라이브러리 및 리소스 Apr 15, 2025 am 12:16 AM

Python과 JavaScript는 커뮤니티, 라이브러리 및 리소스 측면에서 고유 한 장점과 단점이 있습니다. 1) Python 커뮤니티는 친절하고 초보자에게 적합하지만 프론트 엔드 개발 리소스는 JavaScript만큼 풍부하지 않습니다. 2) Python은 데이터 과학 및 기계 학습 라이브러리에서 강력하며 JavaScript는 프론트 엔드 개발 라이브러리 및 프레임 워크에서 더 좋습니다. 3) 둘 다 풍부한 학습 리소스를 가지고 있지만 Python은 공식 문서로 시작하는 데 적합하지만 JavaScript는 MDNWebDocs에서 더 좋습니다. 선택은 프로젝트 요구와 개인적인 이익을 기반으로해야합니다.

Centos에서 Pytorch에 대한 GPU 지원은 어떻습니까? Centos에서 Pytorch에 대한 GPU 지원은 어떻습니까? Apr 14, 2025 pm 06:48 PM

CentOS 시스템에서 Pytorch GPU 가속도를 활성화하려면 Cuda, Cudnn 및 GPU 버전의 Pytorch를 설치해야합니다. 다음 단계는 프로세스를 안내합니다. CUDA 및 CUDNN 설치 CUDA 버전 호환성 결정 : NVIDIA-SMI 명령을 사용하여 NVIDIA 그래픽 카드에서 지원하는 CUDA 버전을보십시오. 예를 들어, MX450 그래픽 카드는 CUDA11.1 이상을 지원할 수 있습니다. Cudatoolkit 다운로드 및 설치 : NVIDIACUDATOOLKIT의 공식 웹 사이트를 방문하여 그래픽 카드에서 지원하는 가장 높은 CUDA 버전에 따라 해당 버전을 다운로드하여 설치하십시오. CUDNN 라이브러리 설치 :

Docker 원리에 대한 자세한 설명 Docker 원리에 대한 자세한 설명 Apr 14, 2025 pm 11:57 PM

Docker는 Linux 커널 기능을 사용하여 효율적이고 고립 된 응용 프로그램 실행 환경을 제공합니다. 작동 원리는 다음과 같습니다. 1. 거울은 읽기 전용 템플릿으로 사용되며, 여기에는 응용 프로그램을 실행하는 데 필요한 모든 것을 포함합니다. 2. Union 파일 시스템 (Unionfs)은 여러 파일 시스템을 스택하고 차이점 만 저장하고 공간을 절약하고 속도를 높입니다. 3. 데몬은 거울과 컨테이너를 관리하고 클라이언트는 상호 작용을 위해 사용합니다. 4. 네임 스페이스 및 CGroup은 컨테이너 격리 및 자원 제한을 구현합니다. 5. 다중 네트워크 모드는 컨테이너 상호 연결을 지원합니다. 이러한 핵심 개념을 이해 함으로써만 Docker를 더 잘 활용할 수 있습니다.

미니 오펜 센토 호환성 미니 오펜 센토 호환성 Apr 14, 2025 pm 05:45 PM

Minio Object Storage : Centos System Minio 하의 고성능 배포는 Go Language를 기반으로 개발 한 고성능 분산 객체 저장 시스템입니다. Amazons3과 호환됩니다. Java, Python, JavaScript 및 Go를 포함한 다양한 클라이언트 언어를 지원합니다. 이 기사는 CentOS 시스템에 대한 Minio의 설치 및 호환성을 간단히 소개합니다. CentOS 버전 호환성 Minio는 다음을 포함하되 이에 국한되지 않는 여러 CentOS 버전에서 확인되었습니다. CentOS7.9 : 클러스터 구성, 환경 준비, 구성 파일 설정, 디스크 파티셔닝 및 미니를 다루는 완전한 설치 안내서를 제공합니다.

Centos에서 Pytorch의 분산 교육을 운영하는 방법 Centos에서 Pytorch의 분산 교육을 운영하는 방법 Apr 14, 2025 pm 06:36 PM

CentOS 시스템에 대한 Pytorch 분산 교육에는 다음 단계가 필요합니다. Pytorch 설치 : 전제는 Python과 PIP가 CentOS 시스템에 설치된다는 것입니다. CUDA 버전에 따라 Pytorch 공식 웹 사이트에서 적절한 설치 명령을 받으십시오. CPU 전용 교육의 경우 다음 명령을 사용할 수 있습니다. PipinStalltorchtorchvisiontorchaudio GPU 지원이 필요한 경우 CUDA 및 CUDNN의 해당 버전이 설치되어 있는지 확인하고 해당 PyTorch 버전을 설치하려면 설치하십시오. 분산 환경 구성 : 분산 교육에는 일반적으로 여러 기계 또는 단일 기계 다중 GPU가 필요합니다. 장소

Centos에서 Pytorch 버전을 선택하는 방법 Centos에서 Pytorch 버전을 선택하는 방법 Apr 14, 2025 pm 06:51 PM

CentOS 시스템에 Pytorch를 설치할 때는 적절한 버전을 신중하게 선택하고 다음 주요 요소를 고려해야합니다. 1. 시스템 환경 호환성 : 운영 체제 : CentOS7 이상을 사용하는 것이 좋습니다. Cuda 및 Cudnn : Pytorch 버전 및 Cuda 버전은 밀접하게 관련되어 있습니다. 예를 들어, pytorch1.9.0은 cuda11.1을 필요로하고 Pytorch2.0.1은 cuda11.3을 필요로합니다. CUDNN 버전도 CUDA 버전과 일치해야합니다. Pytorch 버전을 선택하기 전에 호환 CUDA 및 CUDNN 버전이 설치되었는지 확인하십시오. 파이썬 버전 : Pytorch 공식 지점

Centos의 최신 버전으로 Pytorch를 업데이트하는 방법 Centos의 최신 버전으로 Pytorch를 업데이트하는 방법 Apr 14, 2025 pm 06:15 PM

Centos의 최신 버전으로 Pytorch를 업데이트하면 다음 단계를 수행 할 수 있습니다. 방법 1 : PIP를 사용하여 PIP 업데이트 : 먼저 PIP의 PIP 버전이 최신 버전의 PyTorch를 제대로 설치하지 못할 수 있기 때문에 PIP가 최신 버전인지 확인하십시오. PipinStall-UpgradePip Unin Incalls of Pytorch (설치된 경우) : PipuninStalltorchtorchvisiontorchaudio 설치 최신 정보

See all articles