正则匹配指定单词后的所有数字_Python正则表达式理解用法

本文介绍了Python正则表达式的基本用法,包括字符集合、重复规则、预定义转义字符集、前向界定与后向界定、组的概念等。通过实例解析了如何匹配指定单词后的所有数字,以及正则表达式在字符串处理中的各种应用场景。此外,文章还探讨了正则表达式中的一些特殊字符和规则,如'^'、'$'、'|'、'.'、'?'、'*'、'+'等,以及命名组和无捕获组的使用。最后,文章提到了Python re模块的常用函数,如`findall`、`compile`,并讨论了使用`compile`提高性能的重要性。
摘要由CSDN通过智能技术生成
8061d743579852c490fb83f75abaea3b.png

1. Python 正则式的基本用法

1.1 基本规则

1.2 重复

1.2.1 最小匹配与精确匹配

1.3 前向界定与后向界定

1.4 组的基本知识

2. re 模块的基本函数

2.1 使用 compile 加速

2.2 match search

2.3 finditer

2.4 字符串的修改与替换

3. 更深入的了解 re 的组与对象

3.1 编译后的 Pattern 对象

3.2 组与 Match 对象

3.2.1 组的名字与序号

3.2.2 Match 对象的方法

4. 更多的资料

初学 Python ,对 Python 的文字处理能力有很深的印象,除了 str 对象自带的一些方法外,就是正则表达式这个强大的模块了。但是对于初学者来说,要用好这个功能还是有点难度,我花了好长时间才摸出了点门道。由于我记性不好,很容易就忘事,所以还是写下来比较好一些,同时也可以加深印象,整理思路。

由于我是初学,所以肯定会有些错误,还望高手不吝赐教,指出我的错误。

1 Python 正则式的基本用法

Python 的正则表达式的模块是 ‘re’, 它的基本语法规则就是指定一个字符序列,比如你要在一个字符串 s=’123abc456’ 中查找字符串’abc’, 只要这样写:

>>> import re

>>> s='123abc456eabc789'

>>> re.findall(r’abc’,s)

结果就是:

['abc', 'abc']

这里用到的函数 ”findall(rule , target [,flag] )” 是个比较直观的函数,就是在目标字符串中查找符合规则的字符串。第一个参数是规则,第二个参数是目标字符串,后面还可以跟一个规则选项(选项功能将在 compile 函数的说明中详细说明)。返回结果结果是一个列表, 中间存放的是符合规则的字符串。如果没有符合规则的字符串被找到,就返回一个 列表。

为什么要用 r’ ..‘ 字符串( raw 字符串)? 由于正则式的规则也是由一个字符串定义的,而在正则式中大量使用转义字符 ’/’ ,如果不用 raw 字符串,则在需要写一个 ’/’ 的地方,你必须得写成 ’//’, 那么在要从目标字符串中匹配一个 ’/’ 的时候,你就得写上 4 ’/’ 成为 ’’ !这当然很麻烦,也不直观,所以一般都使用 r’’ 来定义规则字符串。当然,某些情况下,可能不用 raw 字符串比较好。

以上是个最简单的例子。当然实际中这么简单的用法几乎没有意义。为了实现复杂的规则查找, re 规定了若干语法规则。它们分为这么几类:

功能字符 : ‘.’ ‘*’ ‘+’ ‘|’ ‘?’ ‘^’ ‘$’ ‘/’ 等,它们有特殊的功能含义。特别是 ’/’ 字符,它是转义引导符号,跟在它后面的字符一般有特殊的含义。

规则分界符: ‘[‘ ‘]’ ‘ ( ’ ‘ ) ’ ‘{‘ ‘}’ 等,也就是几种括号了。

预定义转义字符集: “/d” “/w” “/s” 等等,它们是以字符 ’/’ 开头,后面接一个特定字符的形式,用来指示一个预定义好的含义。

其它特殊功能字符: ’#’ ‘!’ ‘:’ ‘-‘ 等,它们只在特定的情况下表示特殊的含义,比如 (?# …) 就表示一个注释,里面的内容会被忽略。

下面来一个一个的说明这些规则的含义,不过说明的顺序并不是按照上面的顺序来的,而是我认为由浅入深,由基本到复杂的顺序来编排的。同时为了直观,在说明的过程中尽量多举些例子以方便理解。

1.1 基本规则

‘[‘ ‘]’ 字符集合设定符

首先说明一下字符集合设定的方法。由一对方括号括起来的字符,表明一个字符集合,能够匹配包含在其中的任意一个字符。比如[abc123] ,表明字符 ’a’ ‘b’ ‘c’ ‘1’ ‘2’ ‘3’ 都符合它的要求。可以被匹配。

’[‘ ‘]’ 中还可以通过 ’-‘ 减号来指定一个字符集合的范围,比如可以用 [a-zA-Z] 来指定所以英文字母的大小写,因为英文字母是按照从小到大的顺序来排的。你不可以把大小的顺序颠倒了,比如写成 [z-a] 就不对了。

如果在 ’[‘ ‘]’ 里面的开头写一个 ‘^’ 号,则表示取非,即在括号里的字符都不匹配。如 [^a-zA-Z] 表明不匹配所有英文字母。但是如果 ‘^’ 不在开头,则它就不再是表示取非,而表示其本身,如 [a-z^A-Z] 表明匹配所有的英文字母和字符 ’^’

03573beefd497444d180bf2df5437451.png

大家没看明白的或者需要更多的资料的加群

‘|’ 或规则

将两个规则并列起来,以‘ | ’连接,表示只要满足其中之一就可以匹配。比如

[a-zA-Z]|[0-9] 表示满足数字或字母就可以匹配,这个规则等价于 [a-zA-Z0-9]

注意 :关于 ’|’ 要注意两点:

第一, 它在 ’[‘ ‘]’ 之中不再表示或,而表示他本身的字符。如果要在 ’[‘ ‘]’ 外面表示一个 ’|’ 字符,必须用反斜杠引导,即’/|’ ;

第二, 它的有效范围是它两边的整条规则,比如‘ dog|cat’ 匹配的是‘ dog’ ’cat’ ,而不是 ’g’ ’c’ 。如果想限定它的有效范围,必需使用一个无捕获组 ‘(?: )’ 包起来。比如要匹配 ‘ I have a dog’ ’I have a cat’ ,需要写成 r’I have a (?:dog|cat)’ ,而不能写成 r’I have a dog|cat’

>>> s = ‘I have a dog , I have a cat’

>>> re.f

Python 爬虫正则表达式是非常常用的技术,可以帮助我们从网页提取出需要的信息。下面是一些常用的正则表达式符号和方法: 1. ".":匹配任意单个字符,除了换行符。 2. "^":匹配字符串的开始位置。 3. "$":匹配字符串的结束位置。 4. "*":匹配前一个字符出现 0 次或多次。 5. "+":匹配前一个字符出现 1 次或多次。 6. "?":匹配前一个字符出现 0 次或 1 次。 7. "{m}":匹配前一个字符出现 m 次。 8. "{m,n}":匹配前一个字符出现 m 到 n 次。 9. "(...)":分组匹配,匹配括号内的表达式。 10. "[...]":匹配括号内的任意一个字符。 11. "[^...]":匹配不在括号内的任意一个字符。 12. "\d":匹配数字,等同于 [0-9]。 13. "\D":匹配非数字,等同于 [^0-9]。 14. "\s":匹配空白字符,包括空格、制表符、换行符等。 15. "\S":匹配非空白字符。 16. "\w":匹配单词字符,包括字母、数字、下划线。 17. "\W":匹配非单词字符。 在 Python ,使用 re 模块进行正则表达式的匹配。常用的方法包括: 1. re.compile(pattern):将正则表达式编译成一个对象,提高匹配效率。 2. re.search(pattern, string):在字符串搜索匹配正则表达式的第一个位置。 3. re.findall(pattern, string):在字符串搜索匹配正则表达式的所有位置,并返回一个列表。 4. re.sub(pattern, repl, string):将字符串所有匹配正则表达式的字符替换为指定字符串。 以上是一些常用的正则表达式符号和方法,希望能对你有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值