正则表达式

元字符

 

单行模式:

. 可以匹配所有字符,包括换行符

^代表整个字符串的开头,$代表整个字符串的结尾

多行模式:

.可以匹配换行符之外的字符

^代表行首即整个字符串的开始,$代表行尾即整个字符串的结尾,开始指的是\n后紧接着的字符,结束指的是\n前的字符(此处需注意windows下换行符为\r\n,因此匹配结果时候需要加上\r,比如匹配以e结尾的行为:"e\r$")

例如字符串:

"""aaa

bbb

000

"""

单行模式"^b.*" 匹配失败,而多行模式"^b.*"可以匹配到第二行数据,由此可见,单行模式是将整个字符串看成一行。

 

捕获


(pattern)

说明:a. 使用小括号制定一个子表达式,也叫分组,捕获后会自动分组号从1开始;b. 可以改变优先级,分组号为0的表示匹配的整个字符串而不是括号中的内容

\数字  

说明:匹配对应的分组
举例:"(very) \1" 匹配"very very",但捕获的组group是very

(?:pattern)

说明:如果仅仅为了改变优先级,就不需要捕获分组
举例:(?:w|f)ood  等价于"wood|food"

(?<name>exp)
(?'name'exp)

说明:分组捕获,但是可以通过name访问分组,python语法必须是(?P<name>exp)

零宽断言

(?=exp)

说明:零宽度正预测先行断言,断言exp一定在匹配的右边出现,也就是说断言后面一定跟一个exp

举例:f(?=oo) f后面一定有oo出现

(?<=exp)

说明:零宽度正回顾后发断言,断言exp一定出现在匹配的左边,也就是说前面一定有个exp

举例:(?<=f)ood、(?<=t)ook 分别匹配ood、ook、ook之前一定有t出现

负向零宽断言

(?!exp)

说明:零宽度负预测先行断言,断言exp一定不会再匹配的右边出现,也就是说断言后面一定不是exp

举例:f(?!oo) f后面一定不会有oo出现

(?<!exp)

说明:零宽度负回顾后发断言,断言exp一定不会出现在匹配的左边,也就是说前面一定不会有个exp

(?#comment)  

说明:注释

 

贪婪与非贪婪

贪婪:默认是贪婪模式,尽量多匹配更长的字符串

非贪婪:在重复的符号后面加上一个问号,比如:*?、+?、??、{n,}?、{n,m}?

例1: "f.*t"  匹配字符串"feed foot abbd get"  会匹配到"foot abbd get"   ---贪婪

           "f.*?t" 匹配字符串"feed foot abbd get"  会匹配到"foot"   ---非贪婪

 

IgnoreCase

匹配时忽略大小写,python中为re.I、re.IGNORECASE

Singleline

单行模式:可以匹配所有字符,包括'\n',python中为:re.S,re.DOTAIL

Multiline

多行模式:^行首,$行尾,python中为:re.M,re.MULTILINE

IgnorePatternWhitespace

忽略表达式中的空白字符,如果要使用空白字符用转义,#可以用来做注释,python为:re.X,re.VERBOSE

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值