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

正则表达式总结 re (python演示)

2017-07-02 20:11 405 查看
正则表达式的基本规则

普通字符组 []

[] 普通字符组 [abc] 匹配一个字符 a或者b或者c

- 范围表示法 [a-z] 匹配一个字符 a到z中的

排除型字符组 [^]

[^abc] 匹配一个字符是除a b c 之外的所有字符

[^0-9] 匹配一个除了0到9字符之外的所有字符

字符组简记法

\d 包含所有数字字符 相当于 [0-9]

\w 包含所有单词字符 相当于 [0-9a-zA-z_] 注意还会匹配 _ 下划线

\s 包含所有空白字符 相当于 有制表符\t 回车符 \r 换行符 \n等各种”空白字符”

\D \W \S 分别是 \d \w \s 的排除字符组

[\s\S] [\d\D] [\w\W] 都能表示匹配所有字符

\b 单词边界 \b[a-zA-Z]\b 匹配所有的单词

\B 非单词边界 匹配单词之间的字符

元字符转义

- 的转义 [-ab] [a\-b] 匹配 - a b 三个字符

使用原生字符串不需要考虑转义 r”hello world” python

^ 定位到字符串的起始位置

$ 定位到字符串的结束位置 这两个特殊字符能保证整个string都可以由pattern匹配时才算成功。

使用

re.search(r"^abc$",  "abc") != None  #=>True

re.search(r"^abc$", "abcd") != None #=> False


匹配成功时,整个字符串都是abc

量词

{n} 之前的元素必须出现n次

{m,n} 之前的元素最少出现m次,最多出现n次

{m,} 之前的元素最少出现m次,出现次数无上限

{0,n} 之前的元素最少出现0 次,出现次数n次

常用量词

* 等价式 {0,} 可能出现, 也可能不出现,出现次数没有上限

+ 等价式{1,} 至少出现一次,出现次数没有上限

? 等价式{0,1} 至多出现一次,也可能不出现

点号

. 特殊的元字符, 能匹配任意单个字符, 换行符 \n 除外.

(加S 编译标记能够匹配所有单个字符,包括换行符)

各种量词的转义

{n} \{n} 转义

{m,n} \{m,n}

{m,} \{m,}

{,n} \{,n}

* \*

+ \+

? \?

则一匹配符 | 从多个模式中选择其一操作

at|home 匹配 at、home

r2d2|c3p4 匹配 r2d2、c2p4

re模块: 核心函数和方法

compile(pattern, flags=0)

使用任何可选的标记来编译正则表达式的模式,然后返回一个正则表达式对象。

(在模式匹配之前,正则表达式模式必须编译成正则表达式对象。由于正则表达式在执行过程中将进行多次比较操作,因此强烈建议使用预编译。使用 compile() 函数进行预编译是提升性能的明智之举)

match(pattern, string, flags=0)

尝试使用带有可选标记的正则表达式的模式来匹配字符串。如果匹配返回匹配对象,否则返回 None

(match 从 string 头开始匹配)

search(pattern, string, flags=0)

使用可选标记搜索字符串第一次出现的正则表达式模式,如果匹配成功,就返回匹配对象,否则返回 None

findall(pattern, string, flags=0)

查找字符串中所有(非重复)的正则表达式模式,并返回一个匹配列表

finditer(pattern, string, flags=0)

与findall()函数相同, 但返回的不是一个列表,而是一个迭代器,对于每一次匹配对象都返回一个匹配对象

split(pattern, string, max=0)

根据正则表达式的模式分隔符, split函数将字符串分割为列表,然后返回成功匹配的列表,分割最多操作 max次

sub(pattern, repl, string, count=0)

使用repl 替换所有正则表达式的模式在字符串中出现的位置,除非定义count,否则就将替换所有出现的位置。

常用匹配对象方法

group(num=0) 返回整个匹配对象,或者编号为num的特定子组

groups(default=None) 返回一个包含所有匹配子组的元组(如果没有成功匹配,则返回一个空元组)

groupdict(default=None) 返回一个包含所有匹配子组的命名子组字典,所有的子组名称作为字典的键(如果没有成功匹配,则返回一个空字典)

常用的模块属性

re.I : 不区分大小写

re.L : 根据本地所使用的语言环境通过\w、\W、\b、\B、\s、\S实现匹配

re.M : 多行匹配,^和$ 分别匹配目标字符串的起始和结尾,而不是严格的整个字符串本身。

re.S : “.”(点号)能够匹配所有字符,包括换行符

re.X : 通过反斜线转义,否则所有空格加上#(以及在该行中所有后续文字都被忽略,除非在一个字符串类中或者允许注释并且提高可读性

python 纯干货技术分享:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python 正则表达式