python 中正则表达式的使用

正则表达式的定义

正则表达式(re)(Regular Expression)。正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。
在python中,可以通过内置的re模块引用。
功能:

  • 可以为想要匹配的 相应字符串集指定规则
  • 该字符串集可能包含英文语句,e-amil地址,命令或者任何你想要的东西。

    正则表达式——元字符

    1. [ ]

  • 常用来指定一个字符集:[abc]; [a-z]
  • 元字符在字符集中不起作用:[akm$]
  • 补集匹配不在区间范围内的字符:[^5]

    2. ^

  • 匹配行首。除非设置MULTILINE标志,它只是匹配字符串的开始。在MULTILINE模式里,它也可以直接匹配字符串中的每个换行。

    3. &

    重复的使用

  • *
  • 指定前一个字符可以被匹配零次,或更多次,而不是只有一次,匹配引擎会试着重复尽可能多的次数 (不会超过整数的界定范围,20亿) 例如: a[bcd]*b ----- "abcbd"
  • 匹配行尾,行尾被定义为要么是字符串,要么是一个换行字符后面的任何位置。
    * +*
    表示匹配一或更多次。
    注意:
    和——之间的不同;匹配零或更多次,所以可以根本就不出现,而+则要求至少出现一次。
    ?**
    匹配一次或零次;可以认为它用于标识某事物是可选的。
    {m,n}
    其中m和n是十进制整数。该限定符的意思是至少有m个重复,至多到n个重复。a/{1,3}b
    忽略m会认为下边界是0,而忽略n的结果将是上边界为无穷大(实际上是20亿)
    {0,}等同于
    ,{1,}等同于+,而{0,1}则与?相同。如果可以的话,最好使用*,+,或?

转义字符 \ 的使用

  • 可以用 \ 取消所有的元字符:[ \
  • \d 匹配任何十进制数,它相当于类 [0-9]
  • \D 匹配任何非数字字符,它相当于类[^0-9]
  • \s 匹配任何空白字符,它相当于类[\t\n\r\f\v]
  • \S 匹配任何非空白字符,它相当于类[^\t\n\r\f\v]
  • \w 匹配任何字母数字字符,它相当于类[a-z A-Z 0-9]
  • \W 匹配任何非字母数字字符,它相当于类[^a-z A-Z 0-9]

python中re模块的使用

在Python中使用正则表达式,python提供了re模块,包含所有正则表达式的功能。

  • 由于python的字符串本身也用 \ 转义,所以要注意,例如:
    s = ‘ABC\-001‘ # Python的字符串
    对应的正则表达式字符串变成:
    ‘ABC-001‘
    因此,为了避免冲突,建议使用Python中的 r 前缀,就不用考虑转义的问题了!
  • python中自带了re模块,可以通过import re来使用这个模块,re模块有许多方法,下图给出了所有的方法,在ipython中可以查看具体每个方法的具体含义。

    以下列出了一些常用的方法:
  • 1.re.findall(pattern,string,flags=0) :返回一个包含所有不重复匹配字符串的元组。
    例1:
    1. re.match(pattern, string, flags=0) : 从字符串开头匹配正则表达式,如果匹配返回一个匹配的对象,如果没有匹配返回None,常结合if判断语句使用
      例2:

原文地址:http://blog.51cto.com/13500543/2070322

时间: 2024-08-27 07:46:48

python 中正则表达式的使用的相关文章

python 中正则表达式

. 匹配除换行符以外的任意字符 \w 匹配字母或数字或下划线或汉字 \s 匹配任意的空白符 \d 匹配数字 \b 匹配单词的开始或结束 ^ 匹配字符串的开始 $ 匹配字符串的结束 代码/语法 说明 * 重复零次或更多次 + 重复一次或更多次 ? 重复零次或一次 {n} 重复n次 {n,} 重复n次或更多次 {n,m} 重复n到m次 [aeiou]就匹配任何一个英文元音字母,[.?!]匹配标点符号(.或?或!). [0-9]代表的含意与\d就是完全一致的:一位数字:同理[a-z0-9A-Z_]也完

python 中 正则表达式(Regular Expressions)学习

刚接触了python中的re模块,由于之前没有对正则表达式进行系统性的学习,学起来很费劲,因此写下这篇博客进行积累和巩固,以备后用. 正则表达式的应用是非常广泛的,不论是在linux中还是在编程中,我们总会遇到正则表达式,借着学习python的机会,也稍微系统的学习一下正则表达式. 自己看了下正则表达式的帮助文档,也在Internet上看了一些相关的资料,网上的资料对这个介绍的还是很多的. 以下为自己的学习经历: '*'  这个符号在通配符中是最经常使用的,我们常常用它来匹配任意的字符,在RE中

关于Python中正则表达式的反斜杠问题

之前总是搞不明白正则表达式中的反斜杠的问题.今天经过查阅资料终于搞明白了. 其中最重要的一点就是Python自己的字符串中定义的反斜杠也是转义字符,而正则表达式中的反斜杠也是转义字符,所以正则表达式中反斜杠会涉及到双重转换的问题. 要匹配字符串中1个反斜杠应该怎么写正则表达式?"\\",这样行吗?试试就知道了,re模块抛异常了,因为"\\"就是一个反斜杠,对于正则表达式解析器来说,是一个转义字符,但是后面啥也没有,自然就报错了,"\\\"三个肯定

Python中正则表达式(re模块)的使用

1.正则表达式的概述 (1)概述:正则表达式是一些由字符和特殊符号组成的字符串,他们描述了模式的重复或者表示多个字符,正则表达式能按照某种模式匹配一系列有相似特征的字符串.正则表达式是一种小型的.高度的专业化的编程语言, (2)Python语言中的正则表达式内嵌在Python中通过re模块实现,正则表达式被编译成一系列的字节码,然后由C编写的匹配引擎执行 2.字符匹配 (1)符号匹配 符号 描述 示例 实例说明 literal 匹配文本字符串的字面值literal root 匹配字符串root

第五章 python中正则表达式的使用

第一节    正则表达式的一些介绍 1)掌握正则表达式的案例 2)写一个小爬虫 3)正则表达式(或RE)是一个小型的.高度专业化的编程语言,(在python中)它内嵌在python中,并通过re模块实现. - 可以为想要匹配的相应字符串集指定规则 - 该字符串集可能包含英文语句.e-mail地址.命令或任何你想搞定的东西 - 可以问诸如“这个字符串匹配该模式吗?” - “在这个字符串中是否有部分匹配该模式呢?” - 你也可以使用RE以各种方式来修改或分割字符串. 4)正则表达式模式被编译成一系列

python中正则表达式在中文字符串匹配时的坑

之前一直有使用python 正则表达式来做中文字符串或者中英文数字混合的字符串的匹配,发现有不少情况下会匹配失灵或者结果混乱,并且在不同操作系统上匹配结果也不一致,查了很久都不知道是什么原因.今天终于彻底弄懂了,原来还是python中对中文的编码问题造成的. 解决办法: step1 在设置默认编码为UTF8之后,将正则表达式和待匹配字符串都decode("utf8")统一成 unicode再进行匹配: step2 正则表达式前面一定要加 r : 示例代码: kw_regexp = r'

python中正则表达式的一些问题

今天听到一句话,觉得很在理--"当你遇到一个问题,想到用正则表达式解决时,就变成了两个问题" 这也从侧面说明了正则表达式比较难理解.下面我将用通俗易懂的方式总结一下,最近遇到的一些正则表达式的问题 一. 贪婪匹配的"毛病" 1. 太贪婪就"歇菜"了 匹配模式为r".*(\d*).*",在这个模式中,(\d*)表示贪婪匹配,匹配前面的字符\d,也就是数字0次或无数次,但是我们的字符串中,\d匹配无数次的情况是不存在的(实际上对于

Python中正则表达式的巧妙使用

字符串的匹配查询 re模块中的findall函数可以对指定的字符串进行遍历匹配,获取字符串中所有匹配的子串,并返回一个列表结果.该函数的参数含义如下: findall(pattern, string, flags=0) pattern:指定需要匹配的正则表达式. string:指定待处理的字符串. flags:指定匹配模式,常用的值可以是re.I.re.M.re.S和re.X.re.I的模式是让正则表达式对大小写不敏感:re.M的模式是让正则表达式可以多行匹配:re.S的模式指明正则符号.可以匹

python中的正则表达式

python的正则表达式在http://www.cnblogs.com/huxi/archive/2010/07/04/1771073.html中讲解的比较详细. 本文需要补充以下几个问题: 1.python正则表达式中的贪婪与非贪婪: python正则表达式默认是贪婪的,也就是说尽可能多的匹配.如果想让正则表达式变为不贪婪,可加限定符?. *?.+?.??.和{m,n}?,这样就尽可能小的匹配了. 2.正则表达式中的环视结构: 环视结构不匹配任何字符,只匹配文本中的特定位置. 类型 正则表达式