正则表达式,又称规则表达式,(Regular Expression,在代码中常简写为regex、regexp或RE),是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为"元字符"),是计算机科学的一个概念。
正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串,通常被用来检索、替换那些符合某个模式(规则)的文本。
现代编程语言基本内嵌了正则表达式的库,如per、python也不例外。虽然各种语言和库的定义的正则表达式的语法规则会有所不同,但基本内容是相同的。
Python 虽然自带正则表达式库re,但是该库不是自动加载进内存中的,需要使用下面的语句来引入
import re
正则表达式的基础是匹配,匹配操作有两个,一个是规则,另一个是输入字符串在匹配的基础上可以进行替换、检索等操作。
一个简单的例子:检查用户输入的邮箱地址是否合法,合法的邮箱地址应该符合下面的格式
用户名 @ 主机名
# 引入正则表达式库
import re
# 定义函数
def valid_email_address(addr):
result = re.match(r"^[a-zA-z0-9]+@[a-zA-z0-9]+(\.[a-zA-z0-9]+)*$", addr)
# 匹配成功
if result is not None:
print("[%s] is a valid email address" % addr)
# 匹配失败
else:
print("[%s] is NOT a valid email address" % addr)
valid_email_address("name")
valid_email_address("name@")
valid_email_address("name@126.com")
执行结果:
"D:\Program Files1\Python\python.exe" D:/Pycharm-work/pythonTest/正则/验证邮箱.py
[name] is NOT a valid email address
[name@] is NOT a valid email address
[name@126.com] is a valid email address
Process finished with exit code 0
原子是正则表达式中最基本的组成单位,每个正则表达式中至少要包含一个原子。常见的原子类型有:
1.普通字符作为原子 : 如 az、AZ、0~9 等
2.非打印字符作为原子:如 \f \n \r \t \v \cx
3.通用字符作为原子:\d \D \w \W \s \S
4.原子表:自定义原子表([])作为原子:如:’/apjsp/’ ’/^apjsp/’
5.一些特殊字符和转义后元字符作为原子:
所有标点符号,但语句特殊意义的符号需要转义后才可作为原子,如:\” \’ * + ? . 等
在正则表达式中,定义了一些元字符。这些字符一般用来匹配一组字符,如果希望匹配0-9这10个数字字符,那么便可以用元字符\d。元字符一般是以\开头,后面在跟着一个字符。另外有些语法是描述某个或某组字符出现的频率的,例如。如果认为某个字段是可选的,则可以指定其出现的频率是0或者是1
常用的元字符和语法
元字符 | 功能 | 描述 |
---|---|---|
. | 任意字符 | 除换行外的任意字符 |
\ | 转义符 | 转义符的作用就是使元字符无效;如.表示任意非换行字符,而 . 就表示普通小数点 |
\d | 单个数字字符 | \d等效于0-9 |
\D | 单个非数字字符 | \D等效除了0-9之外的任意字符,等效^0-9 |
\s | 空白字符 | 空白字符包含空格、回车\r、换行\n、制表\t、换页\f |
\S | 非空白字符 | \S+表示不包含空格字符的字符串 |
\w | 单词字符 | 单词字符包括大小写字母、数字、下划线,不包括空格、$、#等 |
\W | 非单词字符 | 非\w所包含的字符 |
任意多个 | 表示0或者多个前面的字符 | |
一个或者多个 | 表示1个或者多个前面的字符 | |
? | 1个或者0个 | 表示0个或1个前面的字符 |
{m} | 出现指定次数 | 表示m个前面的字符 |
{mn} | 指定出现次数的范围 | 表示m到n个前面的字符 |
^ | 开头 | 表示输入的的第一个字符 |
$ | 结尾 | 表示字符串的结尾字符 |
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。