재일치 및 재검색
re.match 함수
구문:
re.match(pattern, string, flags=0)
re.match는 문자열의 시작 위치에서 패턴 일치를 시도합니다. 시작 위치에서 일치에 실패하면 match()는 없음을 반환합니다.
re.search 함수
구문:
re.search(pattern, string, flags=0)
re.search는 전체 문자열을 스캔하고 첫 번째로 성공한 일치 항목을 반환합니다.
re.match와 re.search의 매개변수는 기본적으로 동일합니다. 구체적인 설명은 다음과 같습니다.
Parameter | Description |
pattern | 일치하는 정규식 |
string | 일치 문자열 |
flags | flags는 다음과 같은 정규식의 일치 방법을 제어하는 데 사용됩니다. 대소문자 구분 여부 |
그럼 둘 사이의 차이점은 무엇인가요?
re.match는 문자열의 시작 부분만 일치합니다. 문자열의 시작 부분이 정규 표현식과 일치하지 않으면 일치가 실패하고 함수는 일치 항목을 찾을 때까지 전체 문자열을 일치시킵니다. 이것이 그들 사이의 차이점입니다.
re.match와 re.search는 온라인에서 자세히 소개되어 있지만 개인적인 용도로는 여전히 re.findall을 사용하고 싶습니다
re.search와 re.findall을 비교하려면 아래 예를 보세요. 차이점은 사용법에 있습니다. 다중 그룹화. 구체적으로 주석을 살펴보고 출력 결과를 비교하십시오.
예:
#!/usr/bin/env python3 # -*- coding: UTF-8 -*- # 提取图片的地址 import re a = '<img src="https://s-media-cache-ak0.pinimg.com/originals/a8/c4/9e/a8c49ef606e0e1f3ee39a7b219b5c05e.jpg">' # 使用 re.search search = re.search('<img src="(.*)">', a) # group(0) 是一个完整的分组 print(search.group(0)) print(search.group(1)) # 使用 re.findall findall = re.findall('<img src="(.*)">', a) print(findall) # 多个分组的使用(比如我们需要提取 img 字段和图片地址字段) re_search = re.search('<(.*) src="(.*)">', a) # 打印 img print(re_search.group(1)) # 打印图片地址 print(re_search.group(2)) # 打印 img 和图片地址,以元祖的形式 print(re_search.group(1, 2)) # 或者使用 groups print(re_search.groups())
출력 결과:
<img src="https://s-media-cache-ak0.pinimg.com/originals/a8/c4/9e/a8c49ef606e0e1f3ee39a7b219b5c05e.jpg"> https://s-media-cache-ak0.pinimg.com/originals/a8/c4/9e/a8c49ef606e0e1f3ee39a7b219b5c05e.jpg ['https://s-media-cache-ak0.pinimg.com/originals/a8/c4/9e/a8c49ef606e0e1f3ee39a7b219b5c05e.jpg'] img https://s-media-cache-ak0.pinimg.com/originals/a8/c4/9e/a8c49ef606e0e1f3ee39a7b219b5c05e.jpg ('img', 'https://s-media-cache-ak0.pinimg.com/originals/a8/c4/9e/a8c49ef606e0e1f3ee39a7b219b5c05e.jpg') ('img', 'https://s-media-cache-ak0.pinimg.com/originals/a8/c4/9e/a8c49ef606e0e1f3ee39a7b219b5c05e.jpg')
마지막으로 정규식은 매우 강력한 도구이며 일반적으로 내장 문자열로 해결할 수 없는 문제를 해결하는 데 사용할 수 있습니다. 함수 그리고 정규식은 대부분의 언어에서 사용할 수 있습니다. Python에는 다양한 용도가 있지만 정규 표현식은 크롤러 및 데이터 분석 모듈 모두에서 필수적입니다. 따라서 정규식은 Python을 학습하는 데 정말 중요합니다. 마지막으로 Python에서 지원하는 몇 가지 일반적인 정규식과 정규식 메타 문자 및 구문 문서가 함께 제공됩니다.