正则表达式汇总

Python的正则表达式前添加"r"的作用:

r 代表原生字符串,声明引号中的内容表示该内容的原始含义,避免多次转义添加的多重反斜杠。

多重反斜杠:正则表达式使用 "\" 作为转义字符,如果匹配文本中 "\",正则表达式需要4个 "\",前2个 "\" 和后两个 "\" 在 python 解释器中分别转义成一个 "\",2个 "\" 在正则中被转义为"\"。

>>> import re
>>> s = "d: \\abd\\n"
>>> re.match("d: \\\\", s).group()
>>> re.match(r"d: \\", s).group()

正则表达式中括号[]中不需要使用|作为划分符号

使用中括号[]作为正则条件选项,不需要使用|分隔多个选项,

如果需要多个内容可使用(||)等方式

?<= 和 ?= 的使用:

(?<=(href=")).{1,200}(?=(">)):(?<=(href=")) 匹配以(href=")开头的字符串并捕获(存储)到分组中

如果使用(?:href=")表示匹配以(href=") 开头的字符串但是不存储

(?=(">)) 匹配以(">)结尾的字符串并捕获(存储)到分组中

(?:pattern) 匹配得到的结果包含pattern。
(?=pattern) 则不包含。

例如:"industry abc"的匹配结果:
industr(?:y|ies) —> “industry”
industr(?=y|ies) —> “industr”

分组捕获匹配exp,并捕获文本到自动命名name的组里 (?<name>exp) 匹配exp,也可用(?'name'exp); (?:exp) 匹配exp但不捕获匹配的文本 .

位置指定 (?=exp) 匹配exp前面的位置 (?<=exp) 匹配exp后面的位置 (?!exp) 匹配后面跟的不是exp的位置 (?<!exp) 匹配前面不是exp的位置 注释 (?#comment) 这种类型的组不对正则表达式的处理产生任何影响,只是为了提供让人阅读注释。

使用正则替换字符串中的一部分:

t = "2021-09-17T15:57:31.021+08:00"

pattern = "(\d{4}-\d{2}-)(\d{2})(.*)"

re.sub(pattern, lambda x: x.group(1) + replaced_str + x.group(3), t)

x.group(0):返回整个pattern匹配的内容。

. 匹配除换行符以外的任意字符

\w 匹配字母或数字或下划线或汉字 '[^A-Za-z0-9_]';匹配汉字要根据操作系统和应用环境

匹配文件路径:\/(\w+\/?)+

匹配 MAC 地址:如 “00-01-6C-06-A6-29, 00:01:6C:06:A6:29“

((([a-f0-9]{2}:){5})|(([a-f0-9]{2}-){5}))[a-f0-9]{2}

(?i)整个正则忽略大小写,即re中不必添加 re.I
(?i)((([a-f0-9]{2}:){5})|(([a-f0-9]{2}-){5}))[a-f0-9]{2} 

正则表达式模式修饰符

1、/g 表示该表达式将用来在输入字符串中查找所有可能的匹配,返回的结果可以是多个。如果不加/g最多只会匹配一个
2、/i 表示匹配的时候不区分大小写,这个跟其它语言的正则用法相同
3、/m 表示多行匹配,即匹配换行符两端的潜在匹配,会影响正则中的^$符号
4、/s 与/m相对,单行模式匹配。
5、/e 可执行模式,为PHP专有参数,例如preg_replace函数。
6、/x 忽略空白模式。

上述修饰符可混合使用,如 /ig、/ie等。

参考:

正则 ?<= 和 ?= 用法 以及零宽断言等概念 - mol1995 - 博客园

【python】用正则表达式进行文字局部替换 - 逆火狂飙 - 博客园

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值