

Python正则表达式匹配 | CHEGVA
source link: https://chegva.com/5642.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Python高级(22)—正则表达式匹配
◎知识点
贪婪匹配与勉强匹配
分组匹配
逻辑匹配
◎脚本练习
▽ 贪婪匹配与勉强匹配
"""
贪婪匹配:在匹配正则表达式时,使用尽可能长的子串去匹配。
勉强匹配:在匹配正则表达式时,使用尽可能短的子串去匹配。
"""
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
Recommend
-
35
正则表达式匹配任意字符(包括换行符) 2019-7-30 20:1:39 | 作者: 月光 | 分类:
-
18
正则表达式量词匹配方式的讲解(上篇)如果想要系统的学习正则表达式的话,那么关于量词的匹配方式是必须要掌握好的内容。量词的匹配方式有三种,分别是「匹配优先」,「忽略优先」以及「占有优先」。今天这篇文章先来讲解一下匹...
-
6
PHP中正则表达式对UNICODE字符码的匹配 – CFC4N的博客酷暑难耐,又在家宅一整天。天气热或许是借口,尽管不热,我也喜欢宅在家。晚上看新三国83集(插一句,最近世界杯很火,可是我不看世界杯。来鄙视我吧),一直看到10点半,突然觉得肚子痛,赶紧直奔厕所。如...
-
21
正则表达式匹配素数的原理讲解为什么要写这么一篇文章呢?是因为自己最近在研究和学习正则表达式,然后在RegexGolf上练习技能的时候遇到了这么一道题目,觉得很有趣。我当时虽然也解决了这个问题,但是正则表达式写的有点长,而且也只算是一种...
-
11
用正则表达式匹配3的任意倍数 2019-10-21 分类:算法 /
-
6
Python爬虫编程思想(29):正则表达式的匹配(match)与搜索(search) ...
-
7
Python高级(20)—正则表达式简介,匹配字符串及预编译◎知识点正则表达式的简介使用re模块实现字符串的匹配正则表达式的预编...
-
13
Python高级(21)—单个字符的匹配、正则表达式与原始字符串◎知识点单个字符的匹配正则表达式与原始字符串◎脚本练习...
-
10
Python高级(23)—正则表达式re模块使用◎知识点re模块search方法re模块findall方法re模块finditer方法
-
4
Python高级(25)—正则边界匹配、Match对象的属性和方法◎知识点正则表达式边界匹配Match对象的属性和方法◎脚本练习
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK