Python 정규 표현 식 고전 입문 강좌
정규 표현 식 은 평소에 텍스트 처리(파충류 프로그램 이 html 의 필드 를 분석 하고 log 파일 을 분석 할 때 중요 한 데 이 터 를 캡 처 해 야 합 니 다)를 할 때 자주 사용 합 니 다.일반적으로 우 리 는 Python 의 re 라 이브 러 리 를 사용 합 니 다.정규 표현 식 이 자신의 코드 에서 반복 적 으로 사 용 될 때,우 리 는 이 정규 표현 식 을 re.copile 함 수 를 사용 하여 object 로 변환 하여 호출 할 수 있 습 니 다.
match
입력 한 문자열 을 첫 번 째 문자 부터 일치 시 킵 니 다.일치 하지 않 으 면 비어 있 습 니 다.
search
match 와 달리 search 는 문자열 의 시작 위치 가 일치 할 때 까지 자 유 롭 게 일치 할 수 있 습 니 다.
re 옵션
보통 flag 에서 설정 할 수 있 습 니 다.
re.I
대소 문자 무시re.L
\w,\W,\b,\B,\s 와\S 를 현지 화 식별 하 게 하 다.re.M
일치 할 때 여러 줄 의 매 칭 을 지원 합 니 다.re.DEBUG
정규 표현 식 의 디 버 깅 정 보 를 표시 합 니 다.re.S
이 줄 의 모든 문자 와 일치 하도록 합 니 다.sub 교체
import re
phone='188-88-88 # this is my phone number'
num = re.sub(r'#.*$','',phone)
# num ==188-88-88
num = re.sub(r'\D','',phone)
# num = 1888888
이 코드 의 전 의 를 사용 할 수 있 습 니 다.sublime text 에서 사용 하 는 검색 교체 와 같 습 니 다.예 를 들 어 저 는 C 언어 에 있 는 매크로 정 의 를 lua 안의 변수 정의 로 바 꿔 야 합 니 다.
import re
print( re.sub( r'#define\s+([a-zA-Z_]+)\s+([a-zA-Z_0-9]+)', r'_G.\1 = \2', '#define MAX_RECV_SIZE 100' ) )
#_G.MAX_RECV_SIZE = 100
subn 함수 가 유사 합 니 다.교체 횟수 만 맞 출 수 있 습 니 다.findall
일치 하 는 내용 을 배열 로 되 돌려 주 는 것 이 일반적인 방법 일 것 입 니 다.
print( re.findall( '\d+', '66,88,88,777' ) )
# ['66', '88', '88', '777']
finditer일치 하 는 내용 을 교체 기 방식 으로 되 돌려 줍 니 다.우 리 는 이것 을 순환 할 수 있 습 니 다.되 돌아 갈 때 MatchObject
for num in re.finditer( '\d+', '66,88,88,777' ):
print num.group()
'''
66
88
88
777
'''
split
re.split(pattern, string, maxsplit=0, flags=0)
>>> re.split(',', 'Words, words, words.')
['Words', ' words', ' words.']
>>> re.split('\W+', 'Words, words, words.')
['Words', 'words', 'words', '']
>>> re.split('(\W+)', 'Words, words, words.')
['Words', ', ', 'words', ', ', 'words', '.', '']
대문자\W 는 비 문자열 을 표시 합 니 다.이것 은 문법 에서 찾 을 수 있 습 니 다.괄호 를 넣 으 면,일치 하 는 split 문자열 을 생략 하지 않 습 니 다.마지막 으로 이것 은 배열 에서 문자열 구분자 로 서 배열 에 남아 있 습 니 다.escape
이 함 수 는 보조 함수 입 니 다.정규 표현 식 을 대량으로 작성 할 때 고정된 문자열 에 정규 보존 문자열 이 포함 되 어 있 을 수 있 습 니 다.그러나 프로그램 이 re 표현 식 일 때 이 함 수 를 사용 하여 문자열 을 변환 할 수 있 습 니 다.
re.escape('[email protected]')
# result
1234\\@gmai\\.com
설명 문법:패턴
묘사 하 다.
^
문자열 의 시작 과 일치 합 니 다.
$
문자열 의 끝 과 일치 합 니 다.
.
임의의 문자 와 일치 합 니 다.줄 바 꿈 자 를 제외 하고 re.DOTALL 태그 가 지정 되 었 을 때 줄 바 꿈 자 를 포함 한 임의의 문자 와 일치 할 수 있 습 니 다.
[…]
한 그룹의 문 자 를 표시 하 는 데 사용 합 니 다.단독 목록:[amk]은'a','m'또는'k'와 일치 합 니 다.
[^…]
[]에 없 는 문자:[^abc]는 a,b,c 를 제외 한 문자 와 일치 합 니 다.
re*
0 개 이상 의 표현 식 과 일치 합 니 다.
re+
하나 이상 의 표현 식 과 일치 합 니 다.
re?
앞의 정규 표현 식 에서 정 의 된 0 개 또는 1 개의 세 션 과 일치 합 니 다.탐욕 이 아 닌 방식 re{n}
re{ n,}
n 개의 앞 표현 식 과 정확하게 일치 합 니 다.
re{ n, m}
n 에서 m 까지 앞의 정규 표현 식 에서 정 의 된 세 션 과 일치 합 니 다.탐욕 방식 a
(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
임의의 공백 문자 와 일치 합 니 다.[\t\r\f]와 같 습 니 다.
\S
임의의 비어 있 지 않 은 문자 일치
\d
임의의 숫자 와 일치 하 며,등가 는[0-9]이다.
\D
임의의 비 숫자 일치
\A
일치 하 는 문자열 시작
\Z
일치 하 는 문자열 이 끝 났 습 니 다.줄 이 바 뀌 기 전의 끝 문자열 만 일치 합 니 다.c
\z
일치 문자열 끝
\G
마지막 으로 완 성 된 위치 와 일치 합 니 다.
\b
단어 경계 와 일치 합 니 다.즉,단어 와 빈 칸 사이 의 위 치 를 말 합 니 다.예 를 들 어'er\b'는'never'의'er'와 일치 할 수 있 지만'verb'의'er'와 일치 할 수 없습니다.
\B
단어 가 아 닌 경계 와 일치 합 니 다.r\B'는'verb'의'er'와 일치 하지만'never'의'er'와 일치 할 수 없습니다.
,\t,등.
줄 바 꿈 문자 와 일치 합 니 다.탭 문자 와 일치 합 니 다.기다리다
\1…\9
n 번 째 그룹의 하위 표현 식 과 일치 합 니 다.
\10
n 번 째 그룹의 하위 표현 식 과 일치 합 니 다.일치 하면.그렇지 않 으 면 8 진 문자 코드 의 표현 식 을 말 합 니 다.
PS:여기 서 여러분 께 매우 편리 한 정규 표현 식 도구 2 가 지 를 제공 합 니 다.참고 하 시기 바 랍 니 다.
JavaScript 정규 표현 식 온라인 테스트 도구:
http://tools.jb51.net/regex/javascript
정규 표현 식 온라인 생 성 도구:
http://tools.jb51.net/regex/create_reg
더 많은 파 이 썬 관련 내용 은 본 사이트 의 주 제 를 볼 수 있 습 니 다.
본 논문 에서 말 한 것 이 여러분 의 Python 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Python의 None과 NULL의 차이점 상세 정보그래서 대상 = 속성 + 방법 (사실 방법도 하나의 속성, 데이터 속성과 구별되는 호출 가능한 속성 같은 속성과 방법을 가진 대상을 클래스, 즉 Classl로 분류할 수 있다.클래스는 하나의 청사진과 같아서 하나의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.