python大作战之正则表达式部分解释

最近练习正则最大的感觉就是不熟练,不知道用什么去更好的匹配,就在那边试,感觉很无脑。

所以,今天和大家一起学习下,理清下一些正则表达式中符号的含义:

 

符号说明实例
.表示任意字符,如果说指定了 DOTALL 的标识,就表示包括新行在内的所有字符。'abc'  >>>'a.c'   >>>结果为:'abc'
^表示字符串开头。(注意:特指字符串,如果字符串中有用其他符号分隔的也按整个字符串来匹配开头,不是按照分隔后的每个元素的开头来匹配)'abc'  >>>'^abc'  >>>结果为:'abc'
$表示字符串结尾。(注意:和^这个一样,特指字符串结尾,也是把字符串看作一个整体去匹配)'abc'  >>>'abc$'  >>>结果为:'abc'
*, +, ?'*'表示匹配前一个字符重复 0 次到无限次,'+'表示匹配前一个字符重复 1次到无限次,'?'表示匹配前一个字符重复 0 次到1次。(注意:这里强调一下是前一个字符)

'abcccd'  >>>'abc*' >>>结果为:'abccc'

'abcccd' >>>'abc+'  >>>结果为:'abccc'

'abcccd' >>>'abc?'  >>>结果为:'abc'

*?, +?, ??   前面的*,+,?等都是贪婪匹配,也就是尽可能多匹配,后面加?号使其变成惰性匹配即非贪婪匹配。(注意:因为?代表匹配前一个字符0到1次,所以,当遇到非贪婪匹配时就按照0次来匹配前一个字符,简单说就是不匹配前一个字符,同理.也是,但是+不一样,+是匹配前一个字符1到无限次,所以遇到?按照1次来匹配)

'abc'  >>>'abc*?' >>>结果为:'ab'

'abc'  >>>'abc??' >>>结果为:'ab'

'abc'  >>>'abc+?' >>>结果为:'abc'

{m}匹配前一个字符 m 次'abcccd' >>>'abc{3}d'  >>>结果为:'abcccd'
{m,n}匹配前一个字符 m 到 n 次'abcccd'  >>> 'abc{2,3}d' >>>结果为:'abcccd'
{m,n}?匹配前一个字符 m 到 n 次,并且取尽可能少的情况 。(注意,这里的意思就是按照m和n取值的最小值来匹配)'abccc'  >>> 'abc{2,3}?' >>>结果为:'abcc'
\对特殊字符进行转义,或者是指定特殊序列 'a.c' >>>'a\.c' >>> 结果为: 'a.c'
[]                 表示一个字符集,所有特殊字符在其都失去特殊意义,只有: ^  -  ]  \   含有特殊含义。(注意:这里就是指匹配[]方括号中的值,方括号中的值没有顺序的,随机匹配就行)'abcd' >>>'a[bc]' >>>结果为:'ab'
|或者,只匹配其中一个表达式 ,如果|没有被包括在()中,则它的范围是整个正则表达式。(注意:|前后都有一个表达式,随机匹配一个表达式)'abcd' >>>'abc|acd' >>>结果为:'abc'
( … )被括起来的表达式作为一个分组. findall 在有组的情况下只显示组的内容 'a123d' >>>'a(123)d' >>>结果为:'123'
(?#...)注释,忽略括号内的内容  特殊构建不作为分组 'abc123' >>>'abc(?#fasd)123' >>>结果为:'abc123'
(?= … )表达式’…’之前的字符串,特殊构建不作为分组在字符串’ pythonretest ’中 (?=test) 会匹配’ pythonre ’
(?!...)后面不跟表达式’…’的字符串,特殊构建不作为分组如果’ pythonre ’后面不是字符串’ test ’,那么 (?!test) 会匹配’ pythonre ’
(?<= … )跟在表达式’…’后面的字符串符合括号之后的正则表达式,特殊构建不作为分组正则表达式’ (?<=abc)def ’会在’ abcdef ’中匹配’ def ’
(?:)取消优先打印分组的内容'abc' >>>'(?:a)(b)' >>>结果为'[b]'
?P<>指定Key'abc' >>>'(?P<n1>a)>>>结果为:groupdict{n1:a}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值