◎知识点
贪婪匹配与勉强匹配
分组匹配
逻辑匹配
◎脚本练习
▽ 贪婪匹配与勉强匹配
""" 贪婪匹配:在匹配正则表达式时,使用尽可能长的子串去匹配。 勉强匹配:在匹配正则表达式时,使用尽可能短的子串去匹配。 """ import re print(re.match(r'ab*', 'abbbbbbc')) # <re.Match object; span=(0, 7), match='abbbbbb'> print(re.match(r'ab*?', 'abbbbbbc')) # <re.Match object; span=(0, 1), match='a'> print(re.match(r'ab+', 'abbbbbbc')) # <re.Match object; span=(0, 7), match='abbbbbb'> print(re.match(r'ab+?', 'abbbbbbc')) # <re.Match object; span=(0, 2), match='ab'> print(re.match(r'ab?', 'abbbbbbc')) # <re.Match object; span=(0, 2), match='ab'> print(re.match(r'ab??', 'abbbbbbc')) # <re.Match object; span=(0, 1), match='a'> print(re.match(r'ab{3}', 'abbbbbbc')) # <re.Match object; span=(0, 4), match='abbb'> print(re.match(r'ab{3}?', 'abbbbbbc')) # <re.Match object; span=(0, 4), match='abbb'> print(re.match(r'ab{3,}', 'abbbbbbc')) # <re.Match object; span=(0, 7), match='abbbbbb'> print(re.match(r'ab{3,}?', 'abbbbbbc')) # <re.Match object; span=(0, 4), match='abbb'> print(re.match(r'ab{3,5}', 'abbbbbbc')) # <re.Match object; span=(0, 6), match='abbbbb'> print(re.match(r'ab{3,5}?', 'abbbbbbc')) # <re.Match object; span=(0, 4), match='abbb'>
▽ 分组匹配
""" 可以使用小括号()将正则表达式中的部分内容括起来,从而将该部分内部作为一个分组。 从正则表达式的左边往右数,第一个左小括号表示第1个分组,第二个左小括号表示第2个分组,..., 依次类推。因此,可以根据编号对分组进行引用。 """ import re matchobj = re.match(r'(\d+)-(\d+)', '025-3456abc') print(matchobj) # <re.Match object; span=(0, 8), match='025-3456'> print(matchobj.group(1)) # 025 print(matchobj.group(2)) # 3456 print(matchobj.group(0)) # 025-3456 print(matchobj.groups()) # ('025', '3456')
▽ 逻辑匹配
""" 在正则表达式中可以使用|进行逻辑匹配,其匹配规则是: 先尝试匹配左边的表达式,如果匹配成功,则跳过匹配右边的表达式;如果匹配不成功,再匹配右边的表达式。 如果|没有被包括在()中,则它的作用范围是整个正则表达式。 """ import re print(re.match(r'123|12', '123')) # <re.Match object; span=(0, 3), match='123'> print(re.match(r'abc|12', '123')) # <re.Match object; span=(0, 2), match='12'> print(re.match(r'P(ython|erl)', 'Python')) # <re.Match object; span=(0, 6), match='Python'> print(re.match(r'P(ython|erl)', 'Perl')) # <re.Match object; span=(0, 4), match='Perl'>
◎脚本地址:https://github.com/anzhihe/learning/blob/master/python/practise/learn-python/python_senior/regex2.py