各位用户为了找寻关于Python正则表达式教程之一:基础篇的资料费劲了很多周折。这里教程网为您整理了关于Python正则表达式教程之一:基础篇的相关资料,仅供查阅,以下为您介绍关于Python正则表达式教程之一:基础篇的详细内容
前言
之前有人提了一个需求,我一看此需求用正则表达式最合适不过。考虑到之前每次使用正则表达式,都是临时抱佛脚,于是这次我就一边完成任务一边系统的学习了一遍正则表达式。主要参考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 空白字符,相当于[ tnrfv]
S 与s相反
{5} 在此之前的正则表达式部分(下同)准确的出现5次
{2,5} ~出现2到5次
{2,} ~出现2次或多次
{,5} ~出现0到5次
* ~出现0次或多次
? ~出现0次或1次
+ ~出现1次或多次
ABC|DEF 匹配ABC或者DEF
转义字符,如表示匹配*,$表示匹配$*
b、 用以下几个例子简单说明一下:
b:
? 1 2 3 4 5 6 7 8>>> re.search(r
'bhellob'
,
'hello'
)
<_sre.SRE_Match
object
; span
=
(
0
,
5
), match
=
'hello'
>
>>> re.search(r
'bhellob'
,
'hello world'
)
<_sre.SRE_Match
object
; span
=
(
0
,
5
), match
=
'hello'
>
>>> re.search(r
'bhellob'
,
'hello,world'
)
<_sre.SRE_Match
object
; span
=
(
0
,
5
), match
=
'hello'
>
>>> re.search(r
'bhellob'
,
'hello_world'
)
>>>
其实这里,b大体上和W一支,但是b可以匹配行首行尾等非显示类的字符,而W不可以。
:
? 1 2 3 4>>> re.search(r
'$100'
,
'$100'
)
<_sre.SRE_Match
object
; span
=
(
0
,
4
), match
=
'$100'
>
>>> re.search(r
'$100'
,
'$100'
)
>>>
想要匹配那些在正则表达式中有特殊含义的字符,如$、^、*等,就需要用进行转义。
raw string:
另外,前面例子中,模式字符串(pattern)前面都加了一个r,这个r的意思是raw string,后面所接的字符串,Pyhton解释器无需对其进行转义。因为,在Python字符串中和正则表达式中都有特殊含义,所以如果不是raw string,那么要表达一个字符,就需要四个了(在Python解释器中先转义一次,2个表示1个,剩下2个,在正则表达式中又转义一次,最终剩下一个)。例如:
? 1 2 3 4 5 6 7 8 9 10 11 12>>> re.search(r
'bhellob'
,
'hello'
)
<_sre.SRE_Match
object
; span
=
(
0
,
5
), match
=
'hello'
>
>>> re.search(
'bhellob'
,
'hello'
)
>>> re.search(
'bhellob'
,
'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正则表达式之基础的全部内容了,有了这些知识,正则表达式的基本运用就没什么问题了。对于一些特殊情况,还需要掌握另外一些高级用法,敬请期待后续文章。希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,如果有疑问大家可以留言交流。
原文链接:http://blog.guoyb.com/2017/02/27/python-regex/