一.什么是正则表达式
维基百科:正则表达式(英语:Regular Expression,常简写为regex、regexp或RE),又称正则表示式、正则表示法、规则表达式、常规表示法,是计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些匹配某个模式的文本。
二.正则表达式的常用操作符
操作符 | 说明 | 实例 |
---|---|---|
. | 表示任何单个字符 | 万能字符匹配 |
[ ] | 字符集,对单个字符给出取值范围 | [ abc] 表示a或b或c;[ a-z] 表示从a到z的任意一个字符 |
[^] | 非字符集,对单个字符给出排除范围 | [^abc] 表示除abc以外的任意一个字符 |
* | 前一个字符0次或者无限次拓展 | abc* 表示ab或abc或abcc等等,c可以出现0次到无数次 |
+ | 前一个字符一次或者无限次拓展 | abc+ 表示abc或abcc或abccc等等,c可以出现1次到无数次 |
? | 前一个字符0次或者1次拓展 | abc? 表示ab或abc,c可以出现0次或1次 |
I(竖杠) | 左右表达式任意一个 | axIat 表示ax或者at |
{m} | 拓展前一个字符m次 | ab{2}c 表示abbc,b出现2次 |
{m,n} | 拓展前一个字符m到n次(包含n次) | ab{1,2}c 表示abc或者abbc |
^ | 匹配字符串开头 | ^abc 表示abc在字符串开头 |
$ | 匹配字符串结尾 | abc$ 表示abc在字符串结尾 |
( ) | 分组标记,内部只能使用 I 操作符 | (abIac) 表示ab或者ac,括号表示了在这个范围内 |
\d | 数字,等价于{0-9} | |
\w | 单词字符,等价于{A-Za-z0-9} | |
\b | 匹配单词头或者单词尾 |
三.实例:IP地址的匹配
(1)IP地址分四段,每段都是从0-255,中间用.隔开。
(2)我们需要把0-255进行切分成好几段,这样更容易表示。
(3)0-99 : [1-9]?\d
(4)100-199 :1\d{2}
(5)200-249 :2[0-4]\d
(6)250-255 :25[0-5]
(7)最终表示: (([1-9]?\d | 1\d{2} | 2[0-4]\d | 25[0-5]).){3}([1-9]?\d | 1\d{2} | 2[0-4]\d | 25[0-5])
四.一些匹配例子
∙
\bullet
∙ 匹配单词Love:print(re.findall(r'Love',text)
∙
\bullet
∙ 匹配g开头的所有单词:print(re.findall(r'\bg\w*?\b',text))
#两个\b表示中间匹配的是单词。
∙
\bullet
∙ 匹配长度为三的单词:print(re.findall(r'\b\w{3}\b',text))