일치에 성공하면 re.match 메서드는 일치하는 개체를 반환합니다. group(num) 또는 groups() 일치 개체 함수를 사용하여 일치하는 표현식을 얻을 수 있습니다. group() 또는 group(0)은 전체 정규식의 일치 결과를 반환합니다.
예:
s= 'abc123abc'
print(re.match('[a-z]+', s)) # <_sre.SRE_Match object; span=(0, 3), match='abc'>
print(re.match('[a-z]+', s).group(0)) # abc
print(re.match('[\d]+', s)) # None
print(re.match('[A-Z]+', s, re.I).group(0)) # abc
print(re.match('[a-z]+', s).span()) # (0, 3)
2, search
설명:
re.search는 전체 문자열을 스캔하고 첫 번째로 성공한 일치 항목을 반환합니다.
구문:
re.search(pattern, string, flags=0)
일치에 성공하면 re.search 메서드는 일치하는 개체를 반환하고, 그렇지 않으면 None을 반환합니다. 일치 표현식은 group(num) 또는 groups() 일치 개체 함수를 사용하여 얻을 수 있습니다.
예:
s = 'abc123abc'
print(re.search('[a-z]+', s).group()) # abc
print(re.search('[a-z]+', s).span()) # (0, 3)
print(re.search('[\d]+', s).group()) # 123
print(re.search('[\d]+', s).span()) # (3, 6)
print(re.search('xyz', s)) # None
groupdict
groupdict는 이름이 일치하는 모든 하위 그룹의 사전을 반환합니다.
print(re.search('[a-z]+', s).groupdict()) # {}
print(re.search('(?P<letter>[a-z]+)(?P<num>\d+)', s).groupdict()) # {'num': '123', 'letter': 'abc'}
3, sub 및 subn
설명:
re.sub는 문자열에서 일치하는 항목을 바꾸는 데 사용됩니다.
re.subn은 대체된 문자열과 대체 횟수를 포함하는 튜플을 반환합니다.
구문:
sub(pattern, repl, string, count=0, flags=0)
repl: 대체할 문자열은 함수일 수도 있습니다.
count: 패턴 일치 후 최대 대체 수입니다. 기본값은 0이며, 이는 모든 일치 항목을 대체함을 의미합니다.
예:
s = 'abc123abc'
print(re.sub('[\d]+', '数字', s)) # abc数字abc
print(re.sub('[a-z]+', '字母', s, 1)) # 字母123abc
# 将匹配的数字乘以 2
def double(matched):
value = int(matched.group('value'))
return str(value * 2)
# repl是一个函数
print(re.sub('(?P<value>\d+)', double, s)) # abc246abc
print(re.subn('[\d]+', '数字', s)) # ('abc数字abc', 1)
print(re.subn('[a-z]+', '字母', s,)) # ('字母123字母', 2)
print(re.subn('[a-z]+', '字母', s, 1)) # ('字母123字母', 1)
4, compile
지침:
re.compile은 정규식을 컴파일하고 match()에 대한 정규식(패턴) 개체를 생성하는 데 사용되며 search() 함수가 사용됩니다.
구문:
compile(pattern, flags=0)
예:
s = 'abc123abc'
p = re.compile('[\d]+')
print(p.match(s, 4, 5).group(0)) # 2 从位置4开始匹配到位置5
print(p.search(s).group(0)) # 123
5, findall
설명:
re.findall은 문자열에서 정규 표현식과 일치하는 모든 하위 문자열을 찾고 목록을 반환하거나, 일치하는 항목이 없으면 빈 목록을 반환합니다.
구문:
findall(pattern, string, flags=0)
예:
s = 'abc123abc'
print(re.findall('[a-z]+', s)) # ['abc', 'abc']
print(re.findall('[h-n]+', s)) # []
6, finditer
설명:
finditer는 문자열 일치에서 정규식을 찾는 findall과 유사합니다. 모든 하위 문자열을 반복자로 반환합니다.
구문:
finditer(pattern, string, flags=0)
예:
s = 'abc123def'
it = re.finditer('[a-z]+', s)
for match in it: print(match.group())
7, Split
지침:
re.split 메소드는 일치하는 하위 문자열에 따라 문자열을 분할한 다음 반환합니다. 목록에.
구문:
split(pattern, string, maxsplit=0, flags=0)
maxsplit: 분리 횟수, maxsplit=1은 한 번 분리하며 기본값은 0이며 횟수에는 제한이 없습니다.
예:
print(re.split('a', '1A1a2A3', re.I)) # ['1A1', '2A3']# 输出结果并未能区分大小写,这是因为re.split(pattern,string,maxsplit, flags)默认是四个参数,当我们传入的三个参数的时候,系统会默认re.I是第三个参数,所以就没起作用。# 如果想让这里的re.I起作用,写成flags=re.I即可。
print(re.split('a', '1A1a2A3', flags=re.I)) # ['1', '1', '2', '3']
8, escape
설명:
re.escape는 문자열의 특수 문자열을 이스케이프합니다.
문법:
escape(pattern)
예:
print(re.escape('www.dxy.cn')) # www\.dxy\.cn
9, Regular
"(?P8a11bc632ea32a57b3e3693c7987c420...)": 그룹화하고 8a11bc632ea32a57b3e3693c7987c420 이름을 지정합니다.
"(?P=name)": 별칭이 8a11bc632ea32a57b3e3693c7987c420인 그룹과 일치하는 문자열을 나타냅니다.
10. 특수 선행사(부정) 정의
정규식에서 일반적으로 사용되는 선행사 정의(?<=exp) 및 선행사 부정 정의(?
(?<=aaa) # 正确
(?<=aaa|bbb) # 正确
(?<=aaa|bb) # 错误
(?<=\d+) # 错误
(?<=\d{3}) # 正确
와 같이 고정 길이여야 하기 때문입니다. 관련 권장 사항:
파이썬에서 로깅 모듈의 용도는 무엇입니까? 로깅 모듈 사용법 소개
파이썬 모듈의 정규 표현식에 대한 자세한 소개