Python

Python 知识量:10 - 41 - 150

6.4 正则表达式><

正则表达式运算符- 6.4.1 -

在说到字符串处理时不得不提正则表达式,在许多编程语言中,正则表达式都是字符串处理不可或缺的工具。

正则表达式是一种强大的字符串处理微型语言,可以高效的处理复杂的字符串任务,例如字符串匹配、替换、拆分等等。

正则表达式有自己的运算符,如下所示:

运算符示例
?xy? 表示y是可选的。
|x|y 表示x或y。
*x* 表示0个或多个x。
+x+ 表示1个或多个x。

1、运算符?表示其紧挨着的左边的字符是可选的。对于“hello?”来说,这里描述了两个字符串:hell和hello。

2、运算符|表示或者。对于“x|y|z”来说,这里描述了3个字符串:x、y、z。

3、运算符*表示其紧挨着的左边的字符是0个或多个,可以是无穷多个。对于“ha*”来说,这里描述的是:h、ha、haa、haaa、.....

4、运算符+表示其紧挨着的左边的字符是1个或多个,可以是无穷多个。对于“ha+”来说,这里描述的是:ha、haa、haaa、.....

此外,在正则表达式中,可以用小括号标出运算符的目标字符串,也就是想运算哪个字符串。对于“(ha)+”来说,这里描述的是:ha、haha、hahaha、......与“ha+”描述是不一样的。

使用正则表达式- 6.4.2 -

匹配字符串是正则表达式的最常用的功能,以下是一个示例:

#match.py
import re #引入正则表达式
def is_string(s):
    return re.match('ok|good',s)!=None

运行结果为:

>>> 
====================== RESTART: D:\PythonTestFile\match.py =====================
>>> is_string('ok')
True
>>> is_string('good')
True
>>> is_string('bad')
False

注意:在match.py中,为了使用正则表达式功能,第二行需要导入Python的标准正则表达式库(re)。函数re.match()匹配成功时会返回一个特殊的正则表达式匹配对象,匹配失败时会返回None,代码中只需要检查是否返回的是None即可。

再来看一个更加复杂些的模式匹配示例:

#match.py
import re #引入正则表达式
def is_string(s):
    return re.match('go+!*',s)!=None

运行结果为:

>>> 
====================== RESTART: D:\PythonTestFile\match.py =====================
>>> is_string('go')
True
>>> is_string('goo')
True
>>> is_string('go!')
True
>>> is_string('gooooo')
True
>>> is_string('gooo!!!!!!!!!!!')
True
>>> is_string('g!')
False