정규 표현 식 re 모듈 깊이 분석(부분)
공식 정의:정규 표현 식 은 문자열 작업 에 대한 논리 적 공식 으로 미리 정 의 된 특정한 문자 와 이 특정한 문자 의 조합 으로'규칙 문자열'을 구성 하 는 것 입 니 다.이'규칙 문자열'은 문자열 에 대한 여과 논 리 를 표현 하 는 데 사 용 됩 니 다.
정규 표현 식 이 무엇 입 니까?규칙-문자열 과 일치 하 는
정규 에 대해 서 는 문자열 과 만 연 결 됩 니 다.우리 가 고려 해 야 할 것 은 같은 위치 에 나타 날 수 있 는 문자 의 범위 이다.
정규 표현 식 은 무엇 을 할 수 있 습 니까?
•1.입력 한 문자열 이 합 법 적 인지 검사 합 니 다.웹 개발 프로젝트 폼 검증◦사용자 가 한 내용 을 입력 할 때 미리 검 사 를 해 야 합 니 다.
◦프로그램의 효율 을 높이 고 서버 의 압력 을 줄 일 수 있 습 니 다.
•2.큰 파일 에서 규칙 에 맞 는 모든 내용 을 찾 을 수 있 습 니 다.로그 분석\파충류◦는 큰 텍스트 에서 규칙 에 맞 는 내용 을 빠르게 찾 을 수 있 습 니 다.
문자 그룹:[문자 그룹]
같은 위치 에 나타 날 수 있 는 여러 문자 로 문자 그룹 을 구성 하고 정규 표현 식 에서[]로 표시 합 니 다.하나의 괄호 는 한 글자 의 위치 만 표시 한다.
문 자 는 숫자,자모,구두점 등 여러 종류 로 나 뉜 다.만약 당신 이 지금 한 위 치 를 요구한다 면,이 위치의 문 자 는 0,1,2...9 이 10 개의 숫자 중 하나 일 수 밖 에 없다.
문자 그룹 은 한 위치 에서 나타 날 수 있 는 모든 가능성 을 설명 합 니 다.
# 수용 범 위 는 여러 범 위 를 묘사 할 수 있 고 이어서 쓰 면 된다.
# [abc] 하나의 괄호 는 하나의 문자 위치 만 표시 하고 a 또는 b 또는 c 와 일치 합 니 다.
# [0-9] 일치 하 는 숫자 0-9,ASCII 에 따라 범위 비교
# [a-z] 모든 소문 자 일치
# [A-Z] 모든 대문자 일치
# [a-zA-Z] 모든 대소 문자 일치
# [0-9a-z]
# [0-9a-zA-Z_]
문자:
문자:
문자 일치 하 는 규칙
. 줄 바 꿈 자 를 제외 한 임의의 문자 와 일치 합 니 다.
\w 알파벳 이나 숫자 또는 밑줄 일치
\s 임의의 공백 문자 일치
\d 일치 하 는 숫자
줄 바 꿈 문자 일치
\t 탭 문자 일치
\b 단어의 끝 과 일치 합 니 다.
^ 문자열 의 시작 과 일치 합 니 다.
$ 문자열 의 끝 과 일치 합 니 다.
\W 비 자모 나 숫자 또는 밑줄 일치
\D 일치 하지 않 는 숫자
\S 일치 하 는 공백 문자
a|b 일치 하 는 문자 a 또는 문자 b
표현 식|b 표현 식 a 또는 b 표현 식 의 내용 과 일치 합 니 다.a 와 일치 하면 b 와 계속 일치 하지 않 습 니 다.따라서 두 규칙 이 겹 치 는 부분 이 있 으 면 항상 긴 것 을 앞 에 놓 습 니 다.
() 그룹 을 나 누고 괄호 안에 있 는 표현 식 과 일치 하 며 그룹 을 표시 합 니 다.원 문자 의 역할 범 위 를 제약 하고()내 에서 만 유효 합 니 다.
[] 문자 그룹
[^] 문자 그룹 이 아 닙 니 다.문자 그룹 에 있 는 문 자 를 제외 한 모든 문자 와 일치 합 니 다.
정규 표현 식 에서 일치 하 는 내용 을 표시 할 수 있 는 기 호 는 모두 정규 중의 메타 문자 입 니 다.
# [0-9] --> \d 임의의 숫자 digit 와 일치 함 을 표시 합 니 다.
# [0-9a-zA-Z_] --> \w 일치 하 는 숫자 알파벳 밑줄 표시 word
# 빈 칸-->
# tab --> \t
# Enter Enter -->
# 스페이스 바,tab,리 턴-->\s 모든 공백 표시
# [\d] \d 표시
# [\d\D] [\w\W] [\s\S] 모두
# [^\d] 모든 비 숫자 일치
# [^1] 숫자 1 을 제외 한 모든 것 과 일치 합 니 다.
# [1-9]\d 두 정수 일치
# [1357]\d 1,3,5,7,시작 하 는 두 정수 와 일치 합 니 다.
예 1:여러 사이트 주소 와 일치 합 니 다:
www\.oldboy\.com|www\.baidu\.com|www\.jd\.com|www\.taobao\.com #\.취소
www\.(oldboy|baidu|jd|taobao)\.com #()로|설명 한 내용 의 범 위 를 제약 합 니 다.
메모리 문자:어떤 내용 과 일치 할 수 있 는 지 를 표시 합 니 다.원 문 자 는 항상 한 문자 의 위치 에 있 는 내용 을 표시 합 니 다.
# \d \w \s \t \D \W \S
# [] [^] .
# ^ $
# | ()
양사:
양사 용법 설명
* 0 회 혹은 그 이상 반복 {0,}
+ 한 번 또는 여러 번 반복 하 다 {1,}
? 0 회 또는 1 회 반복,0 회 또는 1 회 일치 {0,1}
{n} n 회 반복,n 회 일치
{n,} n 회 이상 반복,최소 n 회 일치
{n,m} n~m 회 반복,최소 n 회,최대 m 회 일치
예:
정수 일치\d+
소수 일치\d+\.\d+
정수 나 소수 일치:\\d+\.?\\d*\#문제 가 있 습 니 다.예 를 들 어 1.일치 합 니 다. ---> 그룹의 역할:\d+(\.\d+)?
예:핸드폰 번호 매 칭,핸드폰 번호 1 로 시작,2 위 3-9,총 11 위
1[3-9]\d{9}
#사용자 가 입력 한 내용 이 합 법 적 인지 판단 하고 사용자 가 입력 한 것 이 맞 으 면 결 과 를 찾 을 수 있 으 며 입력 한 것 이 틀 리 면 결 과 를 찾 을 수 없다.
^1[3-9]\d{9}$
# 큰 파일 에서 규칙 에 맞 는 모든 내용 을 찾 습 니 다.
1[3-9]\d{9}
전의 부호:
원래 특별한 의 미 를 가 진 문 자 는 그 자체 의 의 미 를 표현 할 때 전의 가 필요 하 다.
. 특별한 의미 가 있 습 니 다.특별한 의 미 를 취소 합 니 다\.
문자 그룹 에 넣 으 면 특별한 의미 가 있 는 내용 이 있 습 니 다.
#기호 자체
[().*+?] 모든 내용 은 문자 그룹 에서 특별한 의 미 를 취소 합 니 다.
#a-c(a 감 c)
[a\-c] -문자 그룹 에 범 위 를 표시 합 니 다.범 위 를 표시 하지 않 으 려 면 전의 가 필요 하거나 문자 그룹의 맨 앞 에 놓 으 십시오.\맨 뒤에 놓 으 십시오.
메타 문자 의 특별한 의 미 를 취소 하 는 방법 은 두 가지 가 있 습 니 다.
1.이 문자 앞 에\\
2.일부 문자 에 적 용 됩 니 다.이 메타 문 자 를 문자 그룹 에 넣 습 니 다.
# [.()+?*]
탐욕 일치:
1. : ,
.*x x
:
2. ( ) : 。 *,+ , , ?
.*?x x
.+?x 1 x
+ +? --->
:
*? ,
+? 1 ,
?? 0 1 ,
{n,m}? n m ,
{n,}? n ,
: :18/15
# 15 : 1-9, 15
[1-9]\d{14}
# 18 : 1-9, 0-9 X, 18
[1-9]\d{16}[\dx]
[1-9]\d{16}[0-9x]
#1:
[1-9]\d{16}[0-9x]|[1-9]\d{14} # 。 [1-9]\d{16}[0-9x] [1-9]\d{14}
^([1-9]\d{16}[0-9x]|[1-9]\d{14})$ #
#2:
[1-9]\d{14}(\d{2}[\dx])? #
^[1-9]\d{14}(\d{2}[\dx])?$ # 。() , \d{2}[\dx] , 0-1
:
:1\d*?3 :1243333344 :1243
:1\d*3 :1243333344 :12433333
re :
# findall , 。 , 。
ret = re.findall('9\d\d','19740ash93010uru')
print(ret)#['974', '930']
ret = re.findall('9(\d)\d','19740ash93010uru')
print(ret)#['7', '3']
# search , , group , , () 。
search ,
.group() .group(0)
.group(n) n
ret = re.search('9(\d)(\d)','19740ash93010uru')
print(ret) # <_sre.SRE_Match object; span=(1, 4), match='974'>
if ret:
print(ret.group())#974 #ret.group(0) 0
print(ret.group(1))#7
print(ret.group(2))#4
# search findall ?
。 ?
, , , , () , 。
#
, , ?:
# (?:)
#findall
ret = re.findall('<\w+>(\w+)</\w+>','<h1>askh930s02391j192agsj</h1>')
print(ret)#['askh930s02391j192agsj']
# search
ret = re.search('<(\w+)>(\w+)</\w+>','<h1>askh930s02391j192agsj</h1>')
print(ret.group())#<h1>askh930s02391j192agsj</h1>
print(ret.group(1))#h1
print(ret.group(2))#askh930s02391j192agsj
# exp , , a+b a-b
exp = '2-3*(5+6)'
ret = re.search('(\d+)[+](\d+)',exp)
print(ret)
print(ret.group(1))#5
print(ret.group(2))#6
print(int(ret.group(1)) + int(ret.group(2)))#11
# douban.html, :
with open('douban.html',encoding='utf-8') as f:
content = f.read()
ret = re.findall('<span class="title">(.*?)</span>(?:\s*<span class="title">.*?</span>)?',content)
print(ret)
# , 。
(.*?) ?
(?:\s*<span class="title">.*?</span>)?
?: , () \s*
.*? ? 0 1
#
# , --
# File--Settings--Project Interpreter-- + -- ---Install Package
import requests
ret = requests.get('https://movie.douban.com/top250?start=0&filter=')
print(ret.content.decode('utf-8'))
총결산위 에서 말 한 것 은 소 편 이 여러분 에 게 소개 한 정규 표현 식 re 모듈(부분)입 니 다.여러분 에 게 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 면 메 시 지 를 남 겨 주세요.소 편 은 제때에 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!
만약 당신 이 본문 이 당신 에 게 도움 이 된다 고 생각한다 면,전 재 를 환영 합 니 다.번 거 로 우 시 겠 지만 출처 를 밝 혀 주 십시오.감사합니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
awk 상용 명령awk 는 모든 입력 줄 을 하나의 기록 으로 인식 하고 그 줄 의 모든 단어 도 메 인 을 하나의 필드 로 인식 합 니 다. ARGC 명령 줄 에 awk 스 크 립 트 가 들 어 오 는 매개...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.