python 학습 노트 (11) - 정규 표현 식
\ d 숫자 와 일치 합 니 다.
\ w 는 알파벳 이나 숫자 와 일치 합 니 다.
임의의 문자 일치
* 임의의 문자 표시
+ 한 글자 이상 표시
? 문자
{n} 은 n 자, {n, m} 은 n - m 자 를 나타 낸다
\ s 는 빈 칸 (Tab 등 공백 문자 포함) 과 일치 하 는 것 을 표시 합 니 다. \ s + 는 최소한 빈 칸 을 표시 합 니 다.
[0 - 9a - zA - Z \] 숫자, 알파벳 또는 밑줄 과 일치 할 수 있 습 니 다.
[0 - 9a - zA - Z \] + 최소한 하나의 숫자, 알파벳 또는 밑줄 로 구 성 된 문자열 과 일치 할 수 있 습 니 다.
[a - zA - Z \] [0 - 9a - zA - Z \ \] * 는 알파벳 이나 밑줄 로 시작 한 다음 에 숫자, 알파벳 또는 밑줄 로 구 성 된 문자열 을 임의로 연결 할 수 있 습 니 다.
[a - zA - Z \] [0 - 9a - zA - Z \ \] {0, 19} 앞 에 한 글자 + 뒤 에는 최대 19 글자 만 제한 합 니 다.
A | B 는 A 또는 B 와 일치 할 수 있 습 니 다.
줄 의 첫머리
$표시 줄 의 끝
메모: 특수 문 자 는 \ \ 로 전 의 를 해 야 하지만 python 의 r 접 두 사 를 사용 하면 전의 문 제 를 고려 하지 않 아 도 됩 니 다.
2. re 모듈
match 방법 은 일치 하 는 지 여 부 를 판단 합 니 다. 일치 하 는 데 성공 하면 Match 대상 을 되 돌려 줍 니 다. 그렇지 않 으 면 None 으로 돌아 갑 니 다.
import re
test='010-12345'
if re.match(r'^\d{3}-\d{5}$', test):
print 'ok'
else:
print 'failed'
3. 절 분 된 문자열
정규 표현 식 으로 문자열 을 자 르 는 것 이 더 유연 합 니 다.
import re
# ['a', 'b', '', '', 'c']
print 'a b c'.split(' ')
# , ['a', 'b', 'c', 'd']
print re.split(r'[\s\,]+', 'a,b, c d')
# , ['a', 'b', 'c', 'd']
print re.split(r'[\s\,\;]+', 'a,b;; c d')
조 를 나누다
정규 표현 식 은 하위 문자열 을 추출 하 는 기능 이 있 습 니 다. () 를 사용 하여 추출 할 그룹 (group) 을 표시 합 니 다.
다음: 일치 하 는 문자열 에서 지역 번호 와 로 컬 번 호 를 추출 할 수 있 습 니 다.
import re
m = re.match(r'^(\d{3})-(\d{3,8})$', '010-12345')
print m.group(0) # '010-12345'
print m.group(1) # '010'
print m.group(2) # '12345'
탐욕 일치
정규 일치 기본 값 은 탐욕 일치 입 니 다. 즉, 가능 한 한 많은 문자 입 니 다.
import re
print re.match(r'^(\d+)(0*)$', '102300').groups()
# ('102300', '')
\ d + 탐욕 으로 인해 뒤의 0 을 모두 일치 시 켰 습 니 다. 결과 0 * 은 빈 문자열 만 일치 할 수 있 습 니 다.반드시 \ d + 비 탐욕 매 칭 을 사용 해 야 합 니 다. 즉, 가능 한 한 적 게 매 칭 해 야 뒤의 0 을 매 칭 하고 개 를 추가 할 수 있 습 니까?탐욕
re.match(r'^(\d+?)(0*)$', '102300').groups() # ('1023', '00')
번역
python 에서 정규 표현 식 을 사용 할 때 re 모듈 내부 에서 두 가지 일 을 합 니 다.
1. 정규 문자열 자체 가 합 법 적 이지 않 으 면 오류 가 발생 합 니 다.
2. 컴 파일 된 정규 로 문자열 일치 하기
만약 에 하나의 정규 가 여러 번 반복 적 으로 사용 해 야 한다 면 효율 적 인 고려 에서 우 리 는 사전 컴 파일 을 할 수 있 고 다음 에 사용 하면 컴 파일 하지 않 아 도 된다.
import re
# :
re_telephone = re.compile(r'^(\d{3})-(\d{3,8})$')
# :
re_telephone.match('010-12345').groups() #('010', '12345')
re_telephone.match('010-8086').groups() #('010', '8086')
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.