正则表达式为高级的文本模式匹配、抽取、与/或文本形式的搜索和替换功能提供了基础
一些由字符和特殊符号组成的字符串,他们描述了模式的重复或者表述多个字符,能按照某种匹配一系列有相似特征的字符串
搜索和匹配两个术语。当严格讨论与字符串中模式相关的正则表达式时,我们会用术语“匹配”(matching),指的是术语“模式匹配”(pattern-matching)。在Python 术语中,主要有两种方法完成模式匹配:“搜索”(searching),即在字符串任意部分中搜索匹配的模式;而“匹配”(matching)是指判断一个字符串能否从起始处全部或者部分地匹配某个模式。搜索通过search()函数或方法来实现,而匹配通过调用match()函数或方法实现。总之,当涉及模式时,全部使用术语“匹配”;我们按照Python如何完成模式匹配的方式来区分“搜索”和“匹配”。
![](https://img.haomeiwen.com/i1329661/3fedb4aea46ccb5a.png)
![](https://img.haomeiwen.com/i1329661/49ae2877e797baaf.png)
1.1
- | 多个模式下选择其一,就是逻辑或
- 。 匹配除了\n以外的所有字符
f.o的意思就说f和o中间有一个任意字符 - 从字符串起始或者结尾或者单词边界匹配
脱字符^ 和特殊字符\A表示从字符串开始的位置匹配
美元符号$ 和特殊字符\Z表示从字符串末尾开始匹配
\b用于匹配一个单词的边界
\B用于匹配一个单词的中间部分 - 方括号表达式匹配括号里面包含的字符,可以放任意字符
a[abc]d 能匹配aad, abd, acd - 限定范围和否定
方括号两个符号中间用 - 连接,表示一个字符的范围
如果^ 紧跟左方括号后面,这个符号表示不匹配给定字符集中的任何一个字符 - 闭包操作符
* 操作符将匹配其左边的正则表达式出现零次或多次的情况
+操作符匹配一次或多次出现的正则表达式
?操作符匹配零次或一次出现的正则表达式
还有大括号操作符({}),里面或者是单个值或者是一对由逗号分隔的值。这将最终精确地匹配前面的正则表达式N次(如果是{N})或者一定范围的次数;例如,{M,N}将匹配M~N次出现。这些符号能够由反斜线符号转义;*匹配星号,等等。
![](https://img.haomeiwen.com/i1329661/5be6612185c33a9a.png)
- 特殊字符集
\d表示十进制数字
\w表示全部数字和字符,包括大小写等
\s表示空格符
上面所有的字符的大写版本表示不必配 \D \W \S - 使用圆括号指定分组
作用对正则表达式进行分组
匹配子组
用处:
关于为何想要对正则表达式进行分组的一个很好的示例是:当有两个不同的正则表达式而且想用它们来比较同一个字符串时。另一个原因是对正则表达式进行分组可以在整个正则表达式中使用重复操作符(而不是一个单独的字符或者字符集)。
- 扩展表示法
?…以问号开始进行扩展
![](https://img.haomeiwen.com/i1329661/b3776d0a4464ca0f.png)
正则表达式和Python语言
re模块来支持正则表达式
group()要么返回整个匹配对象,要么根据要求返回特定子组。groups()则仅返回一个包含唯一或者全部子组的元组。如果没有子组的要求,那么当group()仍然返回整个匹配时,groups()返回一个空元组。
match()是将要介绍的第一个re模块函数和正则表达式对象(regex object)方法。match()函数试图从字符串的起始部分对模式进行匹配。如果匹配成功,就返回一个匹配对象;如果匹配失败,就返回 None,匹配对象的
网友评论