正则表达式(Regular Expression
,在代码中常简写为regex
、 regexp
、RE
或re
)是预先定义好的一个“规则字符率”,通过这个“规则字符串”可以匹配、查找和替换那些符合“规则”的文本。
虽然文本的查找和替換功能可通过字符串提供的方法实现,但是实现起来极为困难,而且运算效率也很低。而使用正则表达式实现这些功能会比较简单,而且效率很高,唯一的困难之处在于编写合适的正则表达式。
Python 中正则表达式应用非常广泛,如数据挖掘、数据分析、网络爬虫、输入有效性验证等,Python 也提供了利用正则表达式实现文本的匹配、查找和替换等操作的 re
模块。
1.1 正则表达式字符串
正则表达式是一种字符串,正则表达式字符串是由普通字符和元字符组成的。
1)普通字符
普通字符是按照字符字面意义表示的字符。
2)元字符
元字符是预先定义好的一些特定字符,比如w
、.
都属于元字符。
1.1.1 元字符
元字符(Metacharacters)是用来描述其他字符的特殊字符,它由基本元字符和普通字符构成。基本元字符是构成元字符的组成要素。基本元字符主要有14个,具体如下图所示。
字符 | 说明 |
---|---|
转义符,表示转义 | |
. | 表示任意一个字符 |
+ | 表示重复1次或多次 |
* | 表示重复0次或多次 |
? | 表示重复0次或1次 |
| |
选择符号,表示“或关系”,例如:A | B 表示匹配A或B |
{} | 定义量词 |
[] | 定义字符类 |
() | 定义分组 |
^ | 可以表示取反,或匹配一行的开始 |
$ | 匹配一行的结束 |
上面表格中w+
是元字符,它由两个基本元字符(和
+
)和一个普通字符 w
构成。另外,还有.
元字符,它由两个基本元字符和
,
构成。
学习正则表达式某种意义上讲就是在学习元字符的使用
,元字符是正则表达式的重点也是难点。下面会分门别类地介绍元字符的具体使用。
1.1.2 字符转义
在正则表达式中有时也需要字符转义,比如 w字符
不表示英文字母 w,而是表示任何语言的单词字符(如英文字母、亚洲文字等)、数字和下画线等内容时,需要在w
字母前加上反斜杠。反斜杠
也是基本元字符,与
Python
语言中的字符转义是类似的。不仅可以对普通字符进行转义,还可以对基本元字符进行转义。如上面的表格,其中点.
字符是希望按照点.
的字面意义使用,作为.com
域名的一部分,而不是作为.
基本元字符使用,所以需要加反斜杠进行转义,即
.
才是表示点.
的字面意义。
1.1.3 开始与结束字符
本节通过一个示例介绍在 Python中如何使用正则表达式。
在1.1.1 节介绍基本元字符时介绍了^
和$
,它们可以用于匹配一行字符串的开始和结束。当以^
开始时,要求一行字符串的开始位置匹配:当以$
结束时,要求一行字符串的结位置匹配。所以正则表达式w+@jiakecong.com
和^w+@jiakecong.com$
是不同的。
示例代码如下:
import re p1 = r'w+@jiakecong.com' p2 = r'^w+@jiakecong.com$' text = "Tony 's email is tony_guan111@jiakecong.com" m = re.search(p1, text) print(m) m = re.search(p2, text) print(m) email = "tony_guan111@jiakecong.com" m = re.search(p2, email) print(m)
https://www.cnblogs.com/jiakecong/p/15207207.html