四时宝库

程序员的知识宝库

Python-点滴4-正则(python3正则)

1、\d{3}-\d{3}-\d{4} "{ }"之中的数字代表重复次数,\d 表示以为数字字符 即 0 ~ 9 的数字

正则匹配练习

1)import re

2)re.complie()创建一个 Regex 对象 例如 phone = re.complie(r'\d{3}-\d{3}-\d{4}')

3)Regex对象的search()方法传入想查找的字符串,返回一个Match对象

4)调用Match对象的group()方法,返回实际匹配文本的字符串。

测试:http://regexpal.com

2、利用()分组

正则表达式字符串中的第一对括号是第1组,第二对括号是第2组,向group()匹配对象方法传入整数1或者2,就可以匹配到不同部分,传入 0 或者不传入参数,返回整个匹配的文本,如果想获取所有分组,请使用groups()方法,如下:

3、利用管道匹配多个分组

字符 | 称为管道,希望匹配许多表达式中的一个,就可以使用它


如果希望匹配多个模式中的一个,例如 希望匹配Batman、Batmobile、Batcopter、Batbat中的任意一个,则可以通过括号来实现:


mo.group()返回了完全匹配的文本

mo.group(1)只是返回第一个括号分组内匹配的文本 ‘mobile’

如果需要匹配真正的管道字符就使用反斜杠转义 即 \|

4、用问号实现可选匹配

字符?表明它前面的分组在这个模式中是可选的,如下:


注意:? 匹配零次或1次

5、用星号匹配零次或多次

上面例子 修改后 如下:


注意:可以观察一下mo2、mo3区别

6、用加号匹配一次或多次

*号意味着 “匹配0次或多次”,+ 则意味着“匹配一次或多次” *号不要求分组出现在匹配的字符串中,但加号不同,必须至少出现一次,如下:


注意: mo3

7、用花括号匹配特定次数

如果想要一个分组重复特定的次数,就在正则表达式中该分组的后面,跟上花括号包围的数字。(Ha){3} 匹配‘HaHaHa’

除了一个数字,还可以匹配一个范围,例如:(Ha){3,5} 将匹配‘HaHaHa’、‘HaHaHaHa’、‘HaHaHaHaHa’

也可以不写花括号中的第一个 或 第二个数字,不限定最小值或最大值,例如:

(Ha){3,} 将匹配3次或者更多次

(Ha){,5} 将匹配0到5次


注意:mo2

8、贪心和非贪心匹配

Python的正则表达式默认是 贪心 的,这表示在有二义的情况下,会匹配最长的字符串,非贪心模式匹配尽可能短的字符串,即 在花括号的后边跟一个问号,如下:


9、findall()方法

search()返回一个Match对象,而findall()方法将返回一组字符串,包含被查到的所有字符串中的所有匹配。

findall()返回一个字符串列表,只要在正则表达式中没有分组,列表中的每个字符串都是一段被查找的文本,匹配正则表达式 例如:


如果在正则表达式中有分组,那么findall将返回元组的列表,每个元组表示一个找到的匹配,其中的项就是正则表达式中每个分组的匹配字符串,例如:


10、建立自己的字符分类

有时想匹配一组字符,但缩写的字符分类太宽泛,可以用方括号定义自己的字符分类,

在字符分类的左方括号后加上一个插入字符(^),就可以得到“非字符类”,将匹配不在这个字符类中的所有字符



11、插入字符和美元字符

可以在正则表达式开始地方插入 ^,表面匹配必须发生在被查找文本开始处,类似的,可以在正字表达式末尾加上美元符号 $ 表结束

举例:


12、不区分大小写的匹配

re.compile() 传入 re.I 作为第二个参数


13、用sub()方法替换字符串

需要传入2个参数,第一个是一个字符串,用于取代发现的匹配,第二个参数是一个字符串,即 正则表达式

例如:


有时候,你可能需要使用匹配的文本本身,作为替换的一部分,在sub()的第一个参数中,可以输入\1、\2、\3、\4 。。。。表示“在替换中输入分组1、2、3.。。的文本”

例如,假定想要隐去姓名,只显示他们的名字的第一个字母,可以使用Agent(\w)\w*,传入r'\1****'作为sub()的第一个参数。字符串中的\1将由分组1匹配的文本所替代,也就是正则表达式的(\w)分组


14、组合使用第二个参数

re.compile()函数只接受一个值作为它的第二个参数,但可以使用 | 将变量组合起来

someRegexValue = re.compile('foo',re.IGNORECASE | re.DOTALL | re.VERBOSE)

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接