您的位置:首页 > 编程语言 > Python开发

Python核心编程技术之正则表达式(努力更新中)

2017-07-18 20:07 405 查看

Python编程核心技术之正则表达式(regex)

一.正则表达式简介

正则表达式(regex)为高级的文本模式匹配、抽取、与/或文本形式的搜索和替换功能提供了基础。简单的来说正则表达式是一些由字符和特殊符号组成的字符串,他们描述了模式的重复或者表述多个字符,于是正则表达式能够按照某种模式匹配一系列有相似特征的字符

串。即能匹配多个字符串。在Python中通过标准库中的re模块来支持正则表达式。

注释:在Python中有两种方法完成模式匹配:搜索和匹配。搜索:通过search()函数在字符串的任意部分中搜索匹配模式。匹配:通过调用math()函数判断一个字符串能否从起始处全部或者部分的匹配某个模式。

二.常见正则表达式符号和特殊字符

符号             说明                            正则表达式模式        匹配的字符串

literal        匹配字符串的值                     foo                 foo

|              匹配多个正则表达式模式              bat|bet|bit         bat,bet,bit

.              匹配任意一个字符(换行符\n除外)     f.o                 在f和o之间具有任何一个字符的字符串

^              匹配字符串的开始                   ^From               任何以From开始的字符串

$              匹配字符串的结尾                    end$               任何以end结束的字符串

[...]          匹配[]中的任意一个字符              b[aeiu]t            bat,bet,bit,but

[x-y]          匹配从字符x到y中的任意一个字符       [0-9][a-zA-Z]       0到9之间的任何一个数字和任何一个字母组成的字符串

[^...]         不匹配此字符集中出现的任何一个字符    [^aeiou]            一个非元音字符

*              匹配前面的正则表达式零次或多次        t[dn]*o            t和o之间有任意多个d或n组成的字符串,
例如to,tdo,tno,tdno,tddo,tndno等

+              匹配前面的正则表达式一次或多次        t[dn]+o            t和o之间有至少一个d或n组成的字符串,
例如tdo,tno,tdno,tddo,tndno等

?              匹配前面的正则表达式零次或一次        [dn]ot?            do,no,dot,not

{N}            匹配前面的正则表达式N次              [0-9]{16}          任何一个16位数字

{M,N}          匹配前面的正则表达式M次到N次         [0-9]{15,16}       任何一个15位或16位数字

(*|+|?|{})?    上面4个重复匹配符号(*,+,?,{})的非贪心版本,即尽可能少的匹配消耗字符,留下尽可能多的字符给后面的模式

()             匹配()中的正则表达式,并保存为子组    f(oo|u)bar


三.常用的用法简介

1.使用择一匹配符号匹配多个正则表达式模式。
表示择一匹配的管道符号(|),竖线。表示一个从多个模式中选择其一的操作模式。用于分割不同的正则表达式。择一匹配也称作并或者逻辑或。

2.匹配任意单个字符。
点号或者句号能匹配出了换行符以外的任何字符(在Python中有一个编译标记【S或者DOTALL】可以推翻这个限制)。

3.从字符串起始或者结尾或单词边界匹配。
如果要匹配字符串的开始位置,就必须要用脱字符(^)或者特殊字符\A。如果要匹配字符串的末尾位置,就要用美元符($)或者\Z。

4.特殊字符\b和\B可以用来匹配字符边界。
\b用于匹配一个字符的边界,任何一个以\b之后字符串开始的字符串。\B用来匹配任何包含而不以\B后字符串作为其实的字符串。

5.创建字符集。
某些时候想要匹配某些特定的字符。方括号可以匹配一对方括号之内的任何字符。

6.限定范围和否定。
字符集还支持匹配指定的字符范围。方括号中两个符号中间用连字符(—)连接,用于指定一个范围。另外,如果脱字符(^)紧随左方括号后面,这个符号就表示不匹配给定字符集中的任何一个字符。

7.使用闭包操作符实现存在性和频数匹配。
星号或者星号操作符(*)将匹配其左边的正则表达式出现零个或者多次的情况。
加号操作符(+)将匹配一次或者多次出现的正则表达式。
问号操作符(?)将匹配零次或者一次出现的正则表达式。
大括号操作符({})里面是一对逗号分隔值。将会最精确的匹配前面正则表达式N次后者一定范围的次数。

8.表示字符集的特殊字符。
可以用d表示任何十进制数。另一个特殊字符(\w)表示全部的字母或者数字的字符集。(\s)表示空格符这些特殊字符的大写则表示不匹配相应的字符集。

9.使用圆括号指定分组。
当时用正则表达式时,一对圆括号可以实现以下任意一个功能:对正则表达式进行分组或匹配子组。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: