速记——用Python实现的正则表达式
正则表达式简介
正则表达式(Regular Expression,简称regex)是一种强大的文本处理工具,用于描述、匹配一系列符合特定规则的字符串。它通过使用普通字符和特殊字符(称为元字符)的组合,来定义一个文本模式,从而实现对字符串的搜索、替换等操作。正则表达式在计算机科学中有着广泛的应用,几乎所有现代编程语言都支持正则表达式的使用,包括但不限于Java、JavaScript、Python等。
正则表达式在 Python 中的基本应用
使用正则表达式,首先需要引入一个包re
。
Python中,正则表达式的匹配方法分为三种,分别为match
,search
,findall
。以上的方法都接收两个参数,第一个为需要匹配的字符串或正则表达式,第二个为目标字符串。
match方法:从头开始匹配,匹配一次。若目标字符串的开头没有与表达式匹配的元素,返回None
。
search方法:从头开始寻找,当查询到第一个符合的位置时,返回找到的元素并停止。
findall方法:查找所有匹配的元素,并全部返回。
正则表达式的语法
单字符的规则
以下组合均代表一个字符。
.
:代表任意的字符,其中\.
代表点本身。[]
:代表属于括号内范围的字符,其中若表示区间,用“-”表示,不同字符之间不带空格。比如[1-7a-dA-Z]
。\d
:表示数字0-9。\D
:表示非数字。\s
:表示空白(空格或Tab)。\S
:表示非空白。\w
:表示单词字符(大小写,数字和下划线)\W
:表示非单词字符。
注意,由于反斜杠在字符串中代表转义字符,因此在代码中需要用“r”来取消对转义字符的识别,示例如下。
1 | import re |
字符长度限制规则
以下表达式表示了对前者字符数量的限制:
*
:表示0到无数个+
:表示1到无数个?
:表示0或1个{m}
:表示该字符只能出现m次{m,}
:表示该字符最少出现m次{m,n}
:表示出现m到n次(其中包含n)
需要注意的是,正则的语法中,对空格的限制较为严格,如上述的表达式
{m,n}
,不能出现任何空格,否则匹配无效。
边界限制
以下表达式限制了字段的边界,即规定查询整个字符串还是字符串的子串。
^
:表示字符串开头$
:表示字符串结尾\b
:表示单词边界\B
:表示非单词边界
分组和选择
()
:表示这是一个单独的字符串分组,在父级表达式中视作一个字符|
:在括号内使用,表示“或”。
应用实例
题目:用正则表达式判定一个字符串是QQ号,长度为5-11位,第一位不能为0.
代码:
1 | import re |
题目:用正则表达式判定一个字符串是电子邮件,电子邮件的规范为xxx[.xxx.xxx]@xxx[.xxx.xxx].xxx
代码:
1 | import re |
代码返回的结果如下:<re.Match object; span=(0, 21), match='[email protected]'>
这个代码中,\w+
表示至少一个单词字符,(\.\w+)*
表示可以存在由点号和至少一个字符组成的后缀,(qq|gmail|163)
表示可选三种字段中的任意一个。
注意:findall()
方法会将每一个分组列出,对于存在多个分组的表达式,应选择match
方法,并且在表达式两边加上括号。
(润啦,最近的Python基础告一段落!)