Python系列之正则表达式

Python 正则表达式模块 (re) 简介

Python 的 re 模块(Regular Expression 正则表达式)提供各种正则表达式的匹配操作,和 Perl 脚本的正则表达式功能类似,使用这一内嵌于 Python 的语言工具,尽管不能满足所有复杂的匹配情况,但足够在绝大多数情况下能够有效地实现对复杂字符串的分析并提取出相关信息。Python 会将正则表达式转化为字节码,利用 C 语言的匹配引擎进行深度优先的匹配。

表 1. 正则表达式语法
符号 说明 实例
. 表示任意字符,如果说指定了 DOTALL 的标识,就表示包括新行在内的所有字符。 ‘abc‘  >>>‘a.c‘   >>>结果为:‘abc‘ 
^ 表示字符串开头。 ‘abc‘  >>>‘^abc‘  >>>结果为:‘abc‘
$ 表示字符串结尾。 ‘abc‘  >>>‘abc$‘  >>>结果为:‘abc‘
*, +, ? ‘*‘表示匹配前一个字符重复 0 次到无限次,‘+‘表示匹配前一个字符重复 1次到无限次,‘?‘表示匹配前一个字符重复 0 次到1次
‘abcccd‘  >>>‘abc*‘ >>>结果为:‘abccc‘

‘abcccd‘ >>>‘abc+‘  >>>结果为:‘abccc‘

‘abcccd‘ >>>‘abc?‘  >>>结果为:‘abc‘

*?, +?, ??    前面的*,+,?等都是贪婪匹配,也就是尽可能多匹配,后面加?号使其变成惰性匹配即非贪婪匹配
‘abc‘  >>>‘abc*?‘ >>>结果为:‘ab‘

‘abc‘  >>>‘abc??‘ >>>结果为:‘ab‘

‘abc‘  >>>‘abc+?‘ >>>结果为:‘abc‘

{m} 匹配前一个字符 m 次 ‘abcccd‘ >>>‘abc{3}d‘  >>>结果为:‘abcccd‘
{m,n} 匹配前一个字符 m 到 n 次 ‘abcccd‘  >>> ‘abc{2,3}d‘ >>>结果为:‘abcccd‘
{m,n}? 匹配前一个字符 m 到 n 次,并且取尽可能少的情况  ‘abccc‘  >>> ‘abc{2,3}?‘ >>>结果为:‘abcc‘
\ 对特殊字符进行转义,或者是指定特殊序列  ‘a.c‘ >>>‘a\.c‘ >>> 结果为: ‘a.c‘
[]                  表示一个字符集,所有特殊字符在其都失去特殊意义,只有: ^  -  ]  \   含有特殊含义 ‘abcd‘ >>>‘a[bc]‘ >>>结果为:‘ab‘
| 或者,只匹配其中一个表达式 ,如果|没有被包括在()中,则它的范围是整个正则表达式 ‘abcd‘ >>>‘abc|acd‘ >>>结果为:‘abc‘
( … ) 被括起来的表达式作为一个分组.   ‘a123d‘ >>>‘a(123)d‘ >>>结果为:‘123‘
(?#...) 注释,忽略括号内的内容  特殊构建不作为分组  ‘abc123‘ >>>‘abc(?#fasd)123‘ >>>结果为:‘abc123‘
(?= … ) 表达式’…’之前的字符串,特殊构建不作为分组 在字符串’ pythonretest ’中 (?=test) 会匹配’ pythonre ’
(?!...) 后面不跟表达式’…’的字符串,特殊构建不作为分组 如果’ pythonre ’后面不是字符串’ test ’,那么 (?!test) 会匹配’ pythonre ’
(?<= … ) 跟在表达式’…’后面的字符串符合括号之后的正则表达式,特殊构建不作为分组 正则表达式’ (?<=abc)def ’会在’ abcdef ’中匹配’ def ’
表 2. 正则表达式特殊序列
特殊表达式序列 说明
\A 只在字符串开头进行匹配。
\b 匹配位于开头或者结尾的空字符串
\B 匹配不位于开头或者结尾的空字符串
\d 匹配任意十进制数,相当于 [0-9]
\D 匹配任意非数字字符,相当于 [^0-9]
\s 匹配任意空白字符,相当于 [ \t\n\r\f\v]
\S 匹配任意非空白字符,相当于 [^ \t\n\r\f\v]
\w 匹配任意数字和字母,相当于 [a-zA-Z0-9_]
\W 匹配任意非数字和字母的字符,相当于 [^a-zA-Z0-9_]
\Z 只在字符串结尾进行匹配
时间: 2024-10-05 10:37:38

Python系列之正则表达式的相关文章

Python系列教程大汇总

Python初级教程 Python快速教程 (手册) Python基础01 Hello World! Python基础02 基本数据类型 Python基础03 序列 Python基础04 运算 Python基础05 缩进和选择 Python基础06 循环 Python基础07 函数 Python基础08 面向对象的基本概念 Python基础09 面向对象的进一步拓展 Python基础10 反过头来看看 Python补充01 序列的方法 Python中级教程 Python进阶01 词典 Pytho

Python中re(正则表达式)模块函数学习

今天学习了Python中有关正则表达式的知识.关于正则表达式的语法,不作过多解释,网上有许多学习的资料.这里主要介绍Python中常用的正则表达式处理函数. 方法/属性 作用 match() 决定 RE 是否在字符串刚开始的位置匹配 search() 扫描字符串,找到这个 RE 匹配的位置 findall() 找到 RE 匹配的所有子串,并把它们作为一个列表返回 finditer() 找到 RE 匹配的所有子串,并把它们作为一个迭代器返回 match() 函数只检查 RE 是否在字符串开始处匹配

python基础之正则表达式

什么是正则表达式? 正则表达式并不仅仅是python的专利,几乎其他的语言都有正则表达式.就比如bash就有正则表达式命令--grep,个人感觉python中的正则表达式类似于 grep -o 正则表达式是用于处理字符串的强大工具,虽然效率上可能不高,但是功能强大! 正则表达式设定了一系列语法,比如说“ . ”表示任意单个字符,\d表示单个数字……  通过组合这些规则我们可以形成一个pattern(模式)!凡是符合这个pattern的字符串,我们就认为它被匹配了,否则,则代表这个字符串是不合法的

python之(re)正则表达式上

python正则表达式知识预备 正则表达式使用反斜杠" \ "来代表特殊形式或用作转义字符,这里跟Python的语法冲突,因此,Python用" \\\\ "表示正则表达式中的" \ ",因为正则表达式中如果要匹配" \ ",需要用\来转义,变成" \\ ",而Python语法中又需要对字符串中每一个\进行转义,所以就变成了" \\\\ ". 上面的写法是不是觉得很麻烦,为了使正则表达式

Python学习 之 正则表达式

1.简单的正则表达式 import re s=r'abc' re.findall(s,"aaaaaaaaaaaaaaa") #结果为[] re.findall(s,"abcaaaaaaaaaaaa") #结果为['abc'] re.findall(s,"abcaaaaaabcaaaa") #结果为['abc','abc'] 2.元字符 [] :指定一个字符集  例如:r't[io]p'  满足的字符串包括'tip'或'top' 加上^表示取反  

Python学习-38.Python中的正则表达式(二)

在Python中,正则表达式还有较其他编程语言有特色的地方.那就是支持松散正则表达式了. 在某些情况,正则表达式会写得十分的长,这时候,维护就成问题了.而松散正则表达式就是解决这一问题的办法. 用上一次分组的代码作为例子: 1 import re 2 userinput = input("please input test string:") 3 m = re.match(r'(\d{3,4})-(\d{8})',userinput) 4 if m: 5 print('区号:' + m

Python学习-37.Python中的正则表达式

作为一门现代语言,正则表达式是必不可缺的,在Python中,正则表达式位于re模块. 1 import re 这里不说正则表达式怎样去匹配,例如\d代表数字,^代表开头(也代表非,例如^a-z则不匹配任何小写字符),$代表结尾,这些百科或者其他书籍都有. 例子一,字符串中是否包含数字: 1 import re 2 userinput = input("please input test string:") 3 if re.match(r'\d',userinput): 4 print(

python的re正则表达式模块学习

python中re模块的用法 Python 的 re 模块(Regular Expression 正则表达式)提供各种正则表达式的匹配操作,在文本解析.复杂字符串分析和信息提取时是一个非常有用的工具,下面我主要总结了re的常用方法. 1.re的简介    使用python的re模块,尽管不能满足所有复杂的匹配情况,但足够在绝大多数情况下能够有效地实现对复杂字符串的分析并提取出相关信息.python 会将正则表达式转化为字节码,利用 C 语言的匹配引擎进行深度优先的匹配. import re pr

【转载】Python中的正则表达式教程

本文http://www.cnblogs.com/huxi/archive/2010/07/04/1771073.html 正则表达式经常被用到,而自己总是记不全,转载一份完整的以备不时之需. 1. 正则表达式基础 1.1. 简单介绍 正则表达式并不是Python的一部分.正则表达式是用于处理字符串的强大工具,拥有自己独特的语法以及一个独立的处理引擎,效率上可能不如str自带的方法,但功能十分强大.得益于这一点,在提供了正则表达式的语言里,正则表达式的语法都是一样的,区别只在于不同的编程语言实现