Python 정규 표현 식 고전 입문 강좌

이 글 의 실례 는 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 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.

좋은 웹페이지 즐겨찾기