Python核心编程——第1章 正则表达式 笔记

本章节详细介绍了Python中的正则表达式,包括特殊符号和字符的使用,如择一匹配、任意字符匹配、边界匹配、字符集创建、闭包操作符等。讲解了星号、加号、问号和大括号等操作符的含义,并提到了贪婪匹配与分组的概念。此外,还讨论了正则表达式与Python语言的结合,强调了re模块的核心函数和方法的重要性。
摘要由CSDN通过智能技术生成

第 1 章 正则表达式

1.1 简介/动机

1.2 特殊符号和字符

常见正则表达式符号和特殊字符

表 示 法 描 述 正则表达式示例
符号
literal 匹配文本字符串的字面值 literal foo
re1|re2 匹配正则表达式 re1 或者 re2 foo|bar
. 匹配任何字符(除了\n 之外) b.b
^ 匹配字符串起始部分 ^Dear
$ 匹配字符串终止部分 /bin/*sh$
* 匹配 0 次或者多次前面出现的正则表达式 [A-Za-z0-9]*
+ 匹配 1 次或者多次前面出现的正则表达式 [a-z]+.com
? 匹配 0 次或者 1 次前面出现的正则表达式 goo?
{N} 匹配 N 次前面出现的正则表达式 [0-9]{3}
{M,N} 匹配 M~N 次前面出现的正则表达式 [0-9]{5,9}
[…] 匹配来自字符集的任意单一字符 [aeiou]
[..x−y..] 匹配 x~y 范围中的任意单一字符 [0-9], [A-Za-z]
[\^…] 不匹配此字符集中出现的任何一个字符,包括某一范围的字符(如果在此字符集中出现) [\^aeiou], [\^A-Za-z0-9]
(*|+|?|{})? 用于匹配上面频繁出现/重复出现符号的非贪婪版本(*、 +、 ?、 {}) .*?[a-z]
(…) 匹配封闭的正则表达式,然后另存为子组 ([0-9]{3})?,f(oo
特殊字符
\d 匹配任何十进制数字,与[0-9]一致(\D 与\d 相反,不匹配任何非数值型的数字) data\d+.txt
\w 匹配任何字母数字字符,与[A-Za-z0-9_]相同(\W 与之相反) [A-Za-z_]\w+
\s 匹配任何空格字符,与[\n\t\r\v\f]相同(\S 与之相反) of\sthe
\b 匹配任何单词边界(\B 与之相反) \bThe\b
\N 匹配已保存的子组 N(参见上面的(…)) price: \16
\c 逐字匹配任何特殊字符 c(即,仅按照字面意义匹配,不匹配特殊含义) \., \\, \*
\A(\Z) 匹配字符串的起始(结束)(另见上面介绍的^和$) \ADear
扩展表示法
(?iLmsux) 在正则表达式中嵌入一个或者多个特殊“标记” 参数(或者通过函数/方法) (?x),(?im)
(?:…) 表示一个匹配不用保存的分组 (?:\w+.)*
(?P<name>…) 像一个仅由 name 标识而不是数字 ID 标识的正则分组匹配 (?P<data>)
(?P=name) 在同一字符串中匹配由(?P<name)分组的之前文本 (?P=data)
(?#…) 表示注释,所有内容都被忽略 (?#comment)
(?=…) 匹配条件是如果…出现在之后的位置,而不使用输入字符串;称作正向前视断言 (?=.com)
(?!…) 匹配条件是如果…不出现在之后的位置,而不使用输入字符串;称作负向前视断言 (?!.net)
(?<=…) 匹配条件是如果…出现在之前的位置,而不使用输入字符串;称作正向后视断言 (?<=800-)
(?<!…) 匹配条件是如果…不出现在之前的位置,而不使用输入字符串;称作负向后视断言 (?<!192.168.)
(?(id\/name)Y|N ) 如果分组所提供的 id 或者 name(名称)存在,就返回正则表达式的条件匹配 Y,如果不存在,就返回 N; |N 是可选项 (?(1)y|x)

1.2.1 使用择一匹配符号匹配多个正则表达式模式

正则表达式模式 匹配的字符串
at|home at、 home
r2d2|c3po r2d2、 c3po
bat|bet|bit bat、 bet、 bit

1.2.2 匹配任意单个字符

正则表达式模式 匹配的字符串
f.o 匹配在字母“f”和“o”之间的任意一个字符;例如 fao、 f9o、 f#o 等
.. 任意两个字符
.end 匹配在字符串 end 之前的任意一个字符

1.2.3 从字符串起始或者结尾或者单词边界匹配

正则表达式模式 匹配的字符串
^From 任何以 From 作为起始的字符串
/bin/tcsh$ 任何以/bin/tcsh 作为结尾的字符串
^Subject: hi$ 任何由单独的字符串 Subject: hi 构成的字符串
the 任何包含 the 的字符串
\bthe 任何以 the 开始的字符串
\bthe\b 仅仅匹配单词 the
\Bthe 任何包含但并不以 the 作为起始的字符串

1.2.4 创建字符集

正则表达式模式 匹配的字符串
b[aeiu]t bat、 bet、 bit、 but
[cr][23][dp][o2] 一个包含四个字符的字符串,第一个字符是“c”或“r”,然后是“2”或“3”,后面是“d”或“p”,最后要么是“o”要么是“2”。例如, c2do、 r3p2、 r2d2、 c3po 等

1.2.5 限定范围和否定

正则表达式模式 匹配的字符串
z.[0-9] 字母“z”后面跟着任何一个字符,然后跟着一个数字
[r-u][env-y][us] 字母“r”、“s”、“t”或者“u”后面跟着“e”、“n”、“v”、“w”、“x”或者“y”,然后跟着“u”或者“s”
[^aeiou] 一个非元音字符(练习:为什么我们说“非元音”而不是“辅音”?)
[^\t\n] 不匹配制表符或者\n
[“-a] 在一个 ASCII 系统中,所有字符都位于“”和“a”之间,即 34~97 之间

1.2.6 使用闭包操作符实现存在性和频数匹配

星号或者星号操作符(*)将匹配其左边的正则表达式出现零次或者多次的情况(在计算机编程语言和编译原理中,该操作称为 Kleene 闭包)。加号(+)操作符将匹配一次或者多次出现的正则表达式(也叫做正闭包操作符),问号(?)
操作符将匹配零次或者一次出现的正则表达式。
还有大括号操作符({}),里面或者是单个值或者是一对由逗号分隔的值。这将最终精确地匹配前面的正则表达式 N 次(如果是{N})或者一定范围的次数;例如, {M, N}将匹配 M~N 次出现。这些符号能够由反斜线符号转义; *匹配星号,等等。
注意,在之前的表格中曾经多次使用问号(重载), 这意味着要么匹配 0 次,要么匹配 1次,或者其他含义:如果问号紧跟在任何使用闭合操作符的匹配后面, 它将直接要求正则表达式引擎匹配尽可

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值