• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

Python正则表达式:基础篇

python 搞代码 4年前 (2022-01-09) 17次浏览 已收录 0个评论

前言

之前有人提了一个需求,我一看此需求用正则表达式最合适不过。考虑到之前每次使用正则表达式,都是临时抱佛脚,于是这次我就一边完成任务一边系统的学习了一遍正则表达式。主要参考PyCon2016上的一个视频Regular Expressions。

我将分几篇文章对正则表达式进行总结。

以下是第一部分,基础:

基础部分

这里总结了正则表达式最基础的用法,其中大部分内容对我(以及大部分程序员)来说都是平时经常用到的,所以我就一笔带过了,只对其中的几处用例子说明。

. 除了换行之外的其他所有字符

^ 行首

$ 行尾

[abcd] abcd其中的一个字符

[^abcd] 除了abcd之外的任意字符

[a-d] 相当于[abcd]

[a-dz] 相当于[abcdz]

\b 单词边界

\w 字母数字或下划线 相当于[a-zA-Z0-9_]

\W 与\w相反

\d 数字,相当于[0-9]

\D 与\d相反

\s 空白字符,相当于[ \t\n\r\f\v]

\S 与\s相反

{5} 在此之前的正则表达式部分(下同)准确的出现5次

{2,5} ~出现2到5次

{2,} ~出现2次或多次

{,5} ~出现0到5次

* ~出现0次或多次

? ~出现0次或1次

+ ~出现1次或多次

ABC|DEF 匹配ABC或者DEF

\ 转义字符,如\表示匹配*,\$表示匹配$*

\b、 \用以下几个例子简单说明一下:

\b:

>>> re.search(r'\bhello\b', 'hello')<_sre.SRE_Match object; span=(0, 5), match='hello'>>>> re.search(r'\bhello\b', 'hello world')<_sre.SRE_Match object; span=(0, 5), match='hello'>>>> re.search(r'\bhello\b', 'hello,world')<_sre.SRE_Match object; span=(0, 5), match='hello'>>>> re.search(r'\bhello\b', 'hello_world') >>>

其实这里,\b大体上和\W一支,但是\b可以匹配行首行尾等非显示类的字符,而\W不可以。

\:

>>> re.search(r'\$100', '$100')<_sre.SRE_Match object; span=(0, 4), match='$100'><i style="color:transparent">本文来源gaodai$ma#com搞$$代**码网$</i>>>> re.search(r'$100', '$100') >>>

想要匹配那些在正则表达式中有特殊含义的字符,如$、^、*等,就需要用\进行转义。

raw string:

另外,前面例子中,模式字符串(pattern)前面都加了一个r,这个r的意思是raw string,后面所接的字符串,Pyhton解释器无需对其进行转义。因为,\在Python字符串中和正则表达式中都有特殊含义,所以如果不是raw string,那么要表达一个\字符,就需要四个\了(在Python解释器中先转义一次,2个\表示1个\,剩下2个\,在正则表达式中又转义一次,最终剩下一个\)。例如:

>>> re.search(r'\bhello\b', 'hello')<_sre.SRE_Match object; span=(0, 5), match='hello'>>>> re.search('\bhello\b', 'hello') >>> re.search('\\bhello\\b', 'hello')<_sre.SRE_Match object; span=(0, 5), match='hello'>>>> re.search('\\\\hello\\\\', '\\hello\\') <_sre.SRE_Match object; span=(0, 7), match='\\hello\\'>>>> re.search(r'\\hello\\', '\\hello\\') <_sre.SRE_Match object; span=(0, 7), match='\\hello\\'>>>> print('\\hello\\')\hello\

更多Python正则表达式:基础篇相关文章请关注搞代码


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Python正则表达式:基础篇

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址