정규 표현 식 - re 모듈 의 일반적인 방법
6388 단어 파충
match 방법 은 문자열 의 머리 를 찾 는 데 사 용 됩 니 다. 모든 일치 하 는 결 과 를 찾 는 것 이 아니 라 일치 하 는 결 과 를 찾 으 면 되 돌아 갑 니 다.그것 의 일반적인 사용 형식 은 다음 과 같다.
match(string[, pos[, endpos]])
그 중에서 string 은 일치 하 는 문자열 입 니 다. pos 와 endpos 는 선택 할 수 있 는 매개 변수 입 니 다. 문자열 의 시작 과 끝 위 치 를 지정 하고 기본 값 은 0 과 len (문자열 길이) 입 니 다.따라서 pos 와 endpos 를 지정 하지 않 을 때 match 방법 은 기본적으로 문자열 의 머리 와 일치 합 니 다.
일치 에 성 공 했 을 때 일치 하 는 대상 을 되 돌려 주 고 일치 하 는 대상 이 없 으 면 None 로 돌아 갑 니 다.
>>> import re
>>> pattern = re.compile(r'\d+') #
>>> m = pattern.match('one12twothree34four') # ,
>>> print m
None
>>> m = pattern.match('one12twothree34four', 2, 10) # 'e' ,
>>> print m
None
>>> m = pattern.match('one12twothree34four', 3, 10) # '1' ,
>>> print m # Match
<_sre.sre_match object="" at="">
>>> m.group(0) # 0
'12'
>>> m.start(0) # 0
3
>>> m.end(0) # 0
5
>>> m.span(0) # 0
(3, 5)
위 에서 일치 하 는 데 성 공 했 을 때 일치 하 는 대상 을 되 돌려 줍 니 다. 그 중:
group ([group 1,...]) 방법 은 하나 이상 의 그룹 이 일치 하 는 문자열 을 얻 는 데 사 용 됩 니 다. 전체 일치 하 는 하위 문자열 을 얻 으 려 면 group () 또는 group (0) 을 직접 사용 할 수 있 습 니 다.
start ([group]) 방법 은 그룹 이 일치 하 는 하위 문자열 의 시작 위치 (하위 문자열 의 첫 번 째 문자 색인) 를 가 져 오 는 데 사 용 됩 니 다. 매개 변 수 는 기본 값 이 0 입 니 다.
end ([group]) 방법 은 그룹 이 일치 하 는 하위 문자열 의 끝 위치 (하위 문자열 의 마지막 문자 색인 + 1) 를 가 져 오 는 데 사 용 됩 니 다. 매개 변 수 는 기본 값 이 0 입 니 다.
span ([group]) 방법 을 되 돌려 줍 니 다 (start (group), end (group).
검색 방법
search 방법 은 문자열 의 모든 위 치 를 찾 는 데 사 용 됩 니 다. 일치 하 는 결 과 를 찾 으 면 되 돌아 갑 니 다. 일치 하 는 결 과 를 찾 는 것 이 아니 라 일반적인 사용 형식 은 다음 과 같 습 니 다.
search(string[, pos[, endpos]])
그 중에서 string 은 일치 하 는 문자열 입 니 다. pos 와 endpos 는 선택 할 수 있 는 매개 변수 입 니 다. 문자열 의 시작 과 끝 위 치 를 지정 하고 기본 값 은 0 과 len (문자열 길이) 입 니 다.일치 하 는 데 성공 하면 일치 하 는 대상 을 되 돌려 주 고 일치 하지 않 으 면 None 로 돌아 갑 니 다.
>>> import re
>>> pattern = re.compile('\d+')
>>> m = pattern.search('one12twothree34four') # match
>>> m
<_sre.sre_match object="" at="">
>>> m.group()
'12'
>>> m = pattern.search('one12twothree34four', 10, 30) #
>>> m
<_sre.sre_match object="" at="">
>>> m.group()
'34'
>>> m.span()
(13, 15)
findall 방법
위의 match 와 search 방법 은 모두 한 번 에 일치 합 니 다. 일치 하 는 결 과 를 찾 으 면 돌아 갑 니 다.그러나 대부분의 경우 문자열 전 체 를 검색 하여 일치 하 는 결 과 를 얻 을 필요 가 있 습 니 다.findall 방법의 사용 형식 은 다음 과 같다.
findall(string[, pos[, endpos]])
그 중에서 string 은 일치 하 는 문자열 입 니 다. pos 와 endpos 는 선택 할 수 있 는 매개 변수 입 니 다. 문자열 의 시작 과 끝 위 치 를 지정 하고 기본 값 은 0 과 len (문자열 길이) 입 니 다.findall 은 일치 하 는 모든 하위 문자열 을 목록 으로 되 돌려 줍 니 다. 일치 하지 않 으 면 빈 목록 을 되 돌려 줍 니 다.
import re
pattern = re.compile(r'\d+') #
result1 = pattern.findall('hello 123456 789')
result2 = pattern.findall('one1two2three3four4', 0, 10)
print(result1)
print(result2)
실행 결과:
['123456', '789']
['1', '2']
finditer 방법
finditer 방법의 행 위 는 findall 의 행동 과 유사 하 며 전체 문자열 을 검색 하여 모든 일치 하 는 결 과 를 얻 을 수 있 습 니 다.일치 하 는 결과 (Match 대상) 의 교체 기 를 순서대로 접근 합 니 다.
import re
pattern = re.compile(r'\d+')
result_iter1 = pattern.finditer('hello 123456 789')
result_iter2 = pattern.finditer('one1two2three3four4', 0, 10)
print(type(result_iter1))
print(type(result_iter2))
print('result1...')
for m1 in result_iter1: # m1 Match
print('matching string: {}, position: {}'.format(m1.group(), m1.span()))
print('result2...')
for m2 in result_iter2:
print('matching string: {}, position: {}'.format(m2.group(), m2.span()))
실행 결과:
result1...
matching string: 123456, position: (6, 12)
matching string: 789, position: (13, 16)
result2...
matching string: 1, position: (3, 4)
matching string: 2, position: (7, 8)
split 방법
split 방법 은 일치 하 는 하위 문자열 에 따라 문자열 을 나 누 어 목록 으로 되 돌려 줍 니 다. 사용 형식 은 다음 과 같 습 니 다.
split(string[, maxsplit])
그 중에서 maxsplit 는 최대 분할 횟수 를 지정 하 는 데 사용 되 며 모든 분할 을 지정 하지 않 습 니 다.
import re
p = re.compile(r'[\s\,\;]+')
print(p.split('a,b;; c d'))
실행 결과:
['a', 'b', 'c', 'd']
sub 방법
sub 방법 은 교체 에 사 용 됩 니 다.그것 의 사용 형식 은 다음 과 같다.
sub(repl, string[, count])
그 중에서 repl 은 문자열 일 수도 있 고 함수 일 수도 있 습 니 다. repl 이 문자열 이 라면 repl 을 사용 하여 문자열 마다 일치 하 는 하위 문자열 을 바 꾸 고 교 체 된 문자열 을 되 돌려 줍 니 다. 또한 repl 은 id 형식 으로 그룹 을 참조 할 수 있 으 나 번호 0 을 사용 할 수 없습니다.repl 이 함수 라면 이 방법 은 하나의 인자 (Match 대상) 만 받 아들 이 고 대체 할 문자열 을 되 돌려 야 합 니 다 (되 돌아 오 는 문자열 에 서 는 그룹 을 참조 할 수 없습니다).count 는 최대 교체 횟수 를 지정 하 는 데 사 용 됩 니 다. 정시 에 모두 교체 하 는 것 을 가리 키 지 않 습 니 다.
import re
p = re.compile(r'(\w+) (\w+)') #
s = 'hello 123, hello 456'
print(p.sub(r'hello world', s)) # 'hello world' 'hello 123' 'hello 456'
print(p.sub(r'\2 \1', s)) #
def func(m):
return 'hi' + ' ' + m.group(2)
print(p.sub(func, s))
print(p.sub(func, s, 1)) #
실행 결과:
hello world, hello world
123 hello, 456 hello
hi 123, hi 456
hi 123, hello 456
일치 하 는 중국어
어떤 경우 에 우 리 는 텍스트 중의 한 자 를 일치 시 키 고 싶 습 니 다. 한 가지 주의해 야 할 것 은 중국어 의 유 니 코드 인 코딩 범 위 는 주로 [u4e 00 - u9fa 5] 에 있 습 니 다. 여기 서 말 하 는 것 은 이 범위 가 완전 하지 않 기 때 문 입 니 다. 예 를 들 어 전각 (중국어) 구두점 이 포함 되 지 않 았 지만 대부분 상황 에서 충분히 사용 할 수 있 을 것 입 니 다.
지금 문자열 title = u '안녕하세요, hello, 세계' 의 중국 어 를 추출 하고 싶다 면 이렇게 할 수 있 습 니 다.
import re
title = u' ,hello, '
pattern = re.compile(r'[\u4e00-\u9fa5]+')
result = pattern.findall(title)
print(result)
실행 결과:
[' ', ' ']
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
(1) 분포 식 파충류 Scrapy 는 어떻게 해 야 하나 요 - 설치Scrapy 의 설치 에 대해 인터넷 을 샅 샅 이 뒤 졌 습 니 다. 하나씩 설치 하 는 것 은 솔직히 좀 번 거 롭 습 니 다. 그럼 원 키 로 설치 한 것 이 있 습 니까?답 은 분명히 있 습 니 다. 다음은 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.