1.元字符:
. 它匹配除了换行字符外的任何字符,在 alternate 模式(re.DOTALL)下它甚至可以匹配换行
^ 匹配行首。除非设置 MULTILINE 标志,它只是匹配字符串的开始。
$ 匹配行尾,行尾被定义为要么是字符串尾,要么是一个换行字符后面的任何位置。
* 重复0或N次
+ 重复1或N次
? 重复0或1次
{} 该限定符的意思是至少有 m 个重复,至多到 n 个重复
[] 它们常用来指定一个字符类别,所谓字符类别就是你想匹配的一个字符集
\ 反斜杠后面可以加不同的字符以表示不同特殊意义。它也可以用于取消所有的元字符,这样你就可以在模式中匹配它们了
| 可选项,或者 "or" 操作符。
() 组
2.[akm$]将匹配字符"a", "k", "m", 或 "$" 中的任意一个;"$"通常用作元字符,但在字符类别里,其特性被除去,恢复成普通字符。
3.用 "\" 开始的特殊字符所表示的预定义字符集
\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_]。
\A 只匹配字符串首。当不在 MULTILINE 模式,\A 和 ^ 实际上是一样的。然而,在 MULTILINE 模式里它们是不同的;\A 只是匹配字符串首,而 ^ 还可以匹配在换行符之后字符串的任何位置。
\Z 只匹配字符串尾。
\b 单词边界。这是个零宽界定符(zero-width assertions)只用以匹配单词的词首和词尾。单词被定义为一个字母数字序列,因此词尾就是用空白符或非字母数字符来标示的。
\B 另一个零宽界定符(zero-width assertions),它正好同 \b 相反,只在当前位置不在单词边界时匹配。
4.重复元字符
* 重复0或N次
+ 重复1或N次
? 重复0或1次
{m,n},其中 m 和 n 是十进制整数。该限定符的意思是至少有 m 个重复,至多到 n 个重复
5.RegexObject对象常用方法
match() 决定 RE 是否在字符串刚开始的位置匹配
search() 扫描字符串,找到这个 RE 匹配的位置
findall() 找到 RE 匹配的所有子串,并把它们作为一个列表返回
finditer() 找到 RE 匹配的所有子串,并把它们作为一个迭代器返回
6.MatchObject对象的常用方法
group() 返回被 RE 匹配的字符串
start() 返回匹配开始的位置
end() 返回匹配结束的位置
span() 返回一个元组包含匹配 (开始,结束) 的位置
7.编译标志
DOTALL, S 使 . 匹配包括换行在内的所有字符
IGNORECASE, I 使匹配对大小写不敏感
LOCALE, L 做本地化识别(locale-aware)匹配
MULTILINE, M 多行匹配,影响 ^ 和 $
VERBOSE, X 能够使用 REs 的 verbose 状态,使之被组织得更清晰易懂
python 正则式 概述及常用字符_python
时间: 2024-11-02 06:38:36
python 正则式 概述及常用字符_python的相关文章
python 正则表达式 概述及常用字符_python
1.元字符: . 它匹配除了换行字符外的任何字符,在 alternate 模式(re.DOTALL)下它甚至可以匹配换行 ^ 匹配行首.除非设置 MULTILINE 标志,它只是匹配字符串的开始. $ 匹配行尾,行尾被定义为要么是字符串尾,要么是一个换行字符后面的任何位置. * 重复0或N次 + 重复1或N次 ? 重复0或1次 {} 该限定符的意思是至少有 m 个重复,至多到 n 个重复 [] 它们常用来指定一个字符类别,所谓字符类别就是你想匹配的一个字符集 \ 反斜杠后面可以加不同的字符以表示
python 正则式使用心得_python
1.match() 从开始位置开始匹配 2.search() 任意位置匹配,如果有多个匹配,只返回第一个 3.finditer() 返回所有匹配 4.每次匹配,都是尽量最大匹配.例如: >>> m = re.compile('abc[bcd]*b') >>> m.findall('abcbcbcb') ['abcbcbcb'] 其实abcbcb也是匹配的abc[bcd]*b的,不过只返回一个最大的匹配值. 5.split()方法 a.根据正则式划分字符串,可指定最大的划
python ip正则式_python
ip正则式为:r'(([12][0-9][0-9]|[1-9][0-9]|[1-9])\.){3,3}([12][0-9][0-9]|[1-9][0-9]|[1-9])' 以下为一个示例 #-*- coding:utf-8 -*- import re def ip(): '验证IP的正则式' def match_group(p): s = '''211.210.209.108 gan ffad1.210.2.108 d ffad1.210.2.109afa''' com = re.compile
python中快速进行多个字符替换的方法小结_python
先给出结论: 要替换的字符数量不多时,可以直接链式replace()方法进行替换,效率非常高: 如果要替换的字符数量较多,则推荐在 for 循环中调用 replace() 进行替换. 可行的方法: 1. 链式replace() string.replace().replace() 1.x 在for循环中调用replace() 「在要替换的字符较多时」 2. 使用string.maketrans 3. 先 re.compile 然后 re.sub -- def a(text): char
Python字符串和文件操作常用函数分析_python
本文实例分析了Python字符串和文件操作常用函数.分享给大家供大家参考.具体如下: # -*- coding: UTF-8 -*- ''' Created on 2010-12-27 @author: sumory ''' import itertools def a_containsAnyOf_b(seq,aset): '''判断seq中是否含有aset里的一个或者多个项 seq可以是字符串或者列表 aset应该是字符串或者列表''' for item in itertools.ifilte
Python实现的几个常用排序算法实例_python
前段时间为准备百度面试恶补的东西,虽然最后还是被刷了,还是把那几天的"战利品"放点上来,算法一直是自己比较薄弱的地方,以后还要更加努力啊. 下面用Python实现了几个常用的排序,如快速排序,选择排序,以及二路并归排序等等. 复制代码 代码如下: #encoding=utf-8import randomfrom copy import copy def directInsertSort(seq): """ 直接插入排序 """
python中正则表达式的使用详解_python
从学习Python至今,发现很多时候是将Python作为一种工具.特别在文本处理方面,使用起来更是游刃有余. 说到文本处理,那么正则表达式必然是一个绝好的工具,它能将一些繁杂的字符搜索或者替换以非常简洁的方式完成. 我们在处理文本的时候,或是查询抓取,或是替换. 一.查找 如果你想自己实现这样的功能模块,输入某一个ip地址,得到这个ip地址所在地区的详细信息. 然后你发现http://ip138.com 可以查出很详细的数据 但是人家没有提供api供外部调用,但是我们可以通过代码模拟查询然后对结
10分钟掌握正则式
日志服务使用正则式提取日志的字段信息,为了让朋友们快速了解如何使用正则式,这里总结了一下常见的正则式的书写方法. 应注意一下几个问题. 1:括号中的内容对应需要提取的内容. 2:尽量少使用.* 常见的正则式有以下几种: 1: \d 匹配数字 2: \S 非空字符 3: \w 英文字母和数字.即[0-9 A-Z a-z] 4: \s 空字符,即[\t\n\r\f] 5: . 匹配任意字符 logtail中常见的配置 1:匹配ip ([\d.]+) 例子:192.168.222 2:匹配时间 (\S
python正则匹配一个html中的几个url
问题描述 python正则匹配一个html中的几个url 在一个网页中匹配出如下的几个url,从url开始匹配不是从href开始匹配 href="http://redirect.wangpansou.cn/redirect.php?url=http%3A%2F%2Fpan.baidu.com%2Fshare%2Flink%3Fuk%3D2803502175%26shareid%3D3310887851%26third%3D0" href="http://redirect.wa