Python中使用正则表达式以及正则表达式匹配规则
前排提要:
本博客介绍在Python下使用正则表达式从给定的字符串中获取到想要的字符串。
1 导库
import re
2 使用模板
re_pattern = re.compile(pattern, flags=0)
result = re.findall(re_pattern,string)
3 说明
参数 | 描述 |
pattern | 匹配的正则表达式,如 r'abc' 可用来匹配abc |
flags |
可选,标志位,控制匹配方式,可选值: re.I 忽略大小写 re.L 表示特殊字符集\w \W \b \B \s \S,依赖于当前环境 re.M 多行模式 re.S 包括换行符在内的任意字符 re.U 根据Unicode字符集解析字符 re.X 为了增加可读性,忽略空格和#后面的注释 re.A 根据ASCII码解析字符 |
string | 待匹配字符串 |
方法 | 描述 |
compile | 编译正则表达式,生成一个正则表达式(Pattern)对象 |
findall | 全文匹配,匹配结果以列表形式返回 |
4 示例
以下代码用来在字符串 str 中匹配符合如下规则的字符串:
中英文括号开头+1个大写字母+1个或无限个数字+0个或1个字符“.”+0个或1个字符“/”+0个或无限个数字+中英文括号结尾
# 导库
import re
# 待处理字符串
str = '小分裂细胞型(弥漫性)非霍奇金淋巴瘤(M96720/3)(Y97.1)(Y77)(yyy)'
# 设定匹配规则,编译
re_str = re.compile(r'[((][A-Z][0-9]+[.]?[/]?[0-9]*[))]', re.S)
# 匹配
ans = re.findall(re_str,str)
# 打印
print(ans)
在字符串 str 中的匹配结果如下,可见有三个字符串符合匹配规则:
5 正则表达式匹配规则
语法 |
描述 |
正则表达式示例 |
对应可匹配字符串示例 |
一般字符 | 匹配自身 | abc | abc |
元字符 | |||
. | 除了换行符之外的任意单个字符 | a.c | abc |
* | 匹配前面一个字符0或无限次 | ab* |
a abbb |
+ | 匹配前面一个字符1次或无限次 | ab+ |
ab abbb |
? | 匹配前面一个字符0次或1次 | ab? |
a ab |
\ | 转义符,使后面一个字符保持原来的意思 | a\.b | a.b |
{m} | m是一个非负整数,表示匹配前一个字符m次 | abc{2} | abcc |
{m,n} | m和n都是非负整数,且m≤n,表示最少匹配m次且最多匹配n次 | ab{2,4}c | abbc |
| | 逻辑或,匹配左右表达式中的任意一个。具有“短路”特点,先匹配左侧表达式,再匹配右侧表达式。建议用()括起来,否则会作用于整个正则表达式 | abc|123 |
abc 123 |
() | 括号,将表达式括起来作为一个分组。分组表达式是一个整体 | a(bc)?d |
ad abcd |
[] | 字符集,里面的字符可以是任意数量个字符,也可以是一个范围。若第一个字符为^,则表示取反,如[^abc]表示除了abc以外的字符。大多数特殊字符(除了-、]、^,使用时仍需用 \ 转义)在[]内都失去其原有的特殊含义,如[.]仅表示匹配字符 . 而不是匹配任意字符 |
[abc] [a-c] |
a b c |
定位符 | |||
^ | 匹配字符串的开头字符 | ^abc | abc |
$ | 匹配字符串的结尾字符 | abc$ | abc |
\b |
匹配一个单词的边界 如\bab表示匹配字符串ab且ab前面要是空格 如ab\b表示匹配字符串ab且ab后面要是空格 |
\bab |
可以匹配到abc中的ab 无法匹配到cab中的ab |
\B | 匹配非边界 | \Bab |
可以匹配到cab中的ab 无法匹配到abc中的ab |
预定义字符集 | |||
\d | 匹配数字,等价于[0-9] | a\dc | a1c |
\D | 匹配非数字,等价于[^\d] | a\Dc | abc |
\s | 匹配空白字符,包括空格、制表符、换页符等 | a\sc | a c |
\S | 匹配非空白字符,等价于[^\s] | a\Sc | abc |
\w | 匹配字母数字下划线,等价于[a-zA-Z0-9_] | a\wc | a_c |
\W | 匹配非字母数字下划线,等价于[^\w] | a\Wc | a c |
Python中使用正则表达式以及正则表达式匹配规则相关推荐
- python中利用re模块正则表达式匹配ip地址
python中利用正则表达式判断ipv4地址是否合法 ip地址的范围为0.0.0.0-255.255.255.255,分成四段,则每段的范围都是0-255,因此,以一段进行分析: 在进行书写匹配规则时 ...
- python基础系列教程——python中的字符串和正则表达式全解
全栈工程师开发手册 (作者:栾鹏) python教程全解 转义字符 正则表达式是建立在字符串的基础上,当需要在字符中使用特殊字符时,python用反斜杠\转义字符.如下表: 转义字符 描述\(在行尾时 ...
- python中的re模块——正则表达式
re模块:正则表达式 正则表达式:为匹配字符 import re #导入re模块 #re.findall('正则表达式','被匹配字符') re模块下findall用法 在正则表达式中: \w 表示匹 ...
- split在python中什么意思_python 正则表达式 split(python里split什么意思)
split rom gui我想用正则表达式实现.谢谢. 问题说split(new char[] {'/t'}明: 例如:s = "01-1" 或 s = "01-01" 想截取"01-&qu ...
- python中else与if的匹配原则_匹配规则
正则表达式的匹配规则是从左到右按规则匹配.我们首先来看如何使用正则表达式来做精确匹配. 对于正则表达式abc来说,它只能精确地匹配字符串"abc",不能匹配"ab&quo ...
- python中re模块及正则匹配
Python中正则表达式 re:re是提供正则表达式匹配操作的模块 一.什么是正则表达式 正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某个模式匹配,Python 自1.5版本起 ...
- python中赋值语句的例子_python赋值语句规则
python中while语句内能赋值吗(即其中有=) python不支持. 就像自增自减运算符一样,技术上可以实现此语法,但是为了贯彻python不可变类型的理念,所以不添加此运算符,python中w ...
- python中findall函数_Python正则表达式 findall函数详解
在写正则表达式的时候总会遇到不少的问题, 特别是在表达式有多个元组的时候.下面看下re模块下的findall()函数和多个表达式元组相遇的时候会出现什么样的坑. 代码如下:import re str= ...
- python中else与if的匹配原则是什么_if-else语句中,if和else的配对原则各是什么
展开全部 if-else语句中,if和else的配对原则都是在同一e68a8462616964757a686964616f31333431353363个复合语句括号"{}"作用域内 ...
- java正则匹配多个斜杠_正则表达式中两个反斜杠的匹配规则详解
关于正则表达式raw的\匹配规则 这是我在学习中获得到的一个例子,第一表达式中匹配到的是none.于是乎我就在思考,为什么会匹配不到,假设\t被转义成一个\t,那么也应该匹配到\tsanle,而不是n ...
最新文章
- Python:urllib2模块Handler处理器 和 自定义Opener
- 深度学习理论与实战:基础篇电子书
- 张亚勤清华AIR战队首次亮相,这阵容不是一般强
- stack与queue
- jQuery——siblings()方法
- 央行降准,房价可能又要骚动了!
- web前后端 http转https
- PCI总线原理(二)
- php如何增加字段,php如何增加字段
- debian的甘特图工具
- php全部大写字母,在PHP中,使用()函数来将全部字母转换为大写
- Blocking Queue三种加入队列方法对比
- VMware ESXi 7.0 U3 SLIC 2.6 Unlocker 集成 Intel NUC 网卡、USB 网卡和 NVMe 驱动
- 工作簿中工作表内容批量提取
- 神舟战神笔记本重做系统
- 巾帼亮相申城,群英共筑梦想
- 青少年计算机编程少儿编程小学生编程是否适合
- shell中的Random随机数
- 惠普 HPE D380 G9 做raid1+0并安装ESXI6.7
- 小米一键解锁system分区_小米note3开启全面屏手势、禁用经典物理按键教程