Python正则表达式中flags参数的实例详解


Posted in Python onApril 01, 2022

flags参数

re.I
    IGNORECASE
    忽略字母大小写

re.L
    LOCALE
    影响 “w, “W, “b, 和 “B,这取决于当前的本地化设置。

re.M
    MULTILINE
    使用本标志后,‘^’和‘$’匹配行首和行尾时,会增加换行符之前和之后的位置。

re.S
    DOTALL
    使 “.” 特殊字符完全匹配任何字符,包括换行;没有这个标志, “.” 匹配除了换行符外的任何字符。

re.X
    VERBOSE
    当该标志被指定时,在 RE 字符串中的空白符被忽略,除非该空白符在字符类中或在反斜杠之后。
    它也可以允许你将注释写入 RE,这些注释会被引擎忽略;
    注释用 “#”号 来标识,不过该符号不能在字符串或反斜杠之后。

忽略大小写

import re
text = '我爱Python我爱python'
pat1 = 'p'
# search
r1 = re.findall(pattern=pat1, string=text, flags=re.I)
print(r1)

[‘P’, ‘p’]

多行模式

import re
text = '我爱数学\n我爱Python\n我爱python'
pat1 = '^我'
# search
r1 = re.findall(pattern=pat1, string=text)
r2 = re.findall(pattern=pat1, string=text, flags=re.M)
print(r1)
print(r2)

[‘我’]
[‘我’, ‘我’, ‘我’]

匹配任何字符

import re
text = '''
我爱Python
我爱pandas
'''
pat1 = '.我'
# search
r1 = re.findall(pattern=pat1, string=text, flags=re.S)
print(r1)
r2 = re.findall(pattern=pat1, string=text)
print(r2)

[’\n我’, ‘\n我’]
[]

补充:正则表达式中的flags

MULTILINE,多行模式, 改变 ^ 和 $ 的行为

In [63]: s
Out[63]: 'first line\nsecond line\nthird line'
 
In [64]: pattern=re.compile(r'^\w+')
 
In [65]: re.findall(pattern,s)
Out[65]: ['first']
 
In [67]: pattern=re.compile(r'^\w+',re.M)
 
In [68]: re.findall(pattern,s)
Out[68]: ['first', 'second', 'third']

re.S   DOTALL,此模式下 '.' 的匹配不受限制,可匹配任何字符,包括换行符,也就是默认是不能匹配换行符

In [62]: s = '''first line
    ...: second line
    ...: third line'''
 
In [71]: regex=re.compile('.+',re.S)
 
In [73]: regex.findall(s)
Out[73]: ['first line\nsecond line\nthird line']
 
In [74]: regex=re.compile('.+')
 
In [75]: regex.findall(s)
Out[75]: ['first line', 'second line', 'third line']

re.X    VERBOSE,冗余模式, 此模式忽略正则表达式中的空白和#号的注释

email_regex = re.compile("[\w+\.]+@[a-zA-Z\d]+\.(com|cn)")
 
email_regex = re.compile("""[\w+\.]+  # 匹配@符前的部分
                            @  # @符
                            [a-zA-Z\d]+  # 邮箱类别
                            \.(com|cn)   # 邮箱后缀  """, re.X)

总结

到此这篇关于Python正则表达式中flags参数的文章就介绍到这了,更多相关Python正则表达式flags参数内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python字符串的encode与decode研究心得乱码问题解决方法
Mar 23 Python
Python的Django框架中的select_related函数对QuerySet 查询的优化
Apr 01 Python
Python多进程同步简单实现代码
Apr 27 Python
python Selenium爬取内容并存储至MySQL数据库的实现代码
Mar 16 Python
Python模拟用户登录验证
Sep 11 Python
python实现跨excel的工作表sheet之间的复制方法
May 03 Python
使用matplotlib画散点图的方法
May 25 Python
Python根据已知邻接矩阵绘制无向图操作示例
Jun 23 Python
Python3.4解释器用法简单示例
Mar 22 Python
Python warning警告出现的原因及忽略方法
Jan 31 Python
浅谈PyTorch的可重复性问题(如何使实验结果可复现)
Feb 20 Python
python 使用递归回溯完美解决八皇后的问题
Feb 26 Python
Python+Tkinter制作专属图形化界面
Pyhton爬虫知识之正则表达式详解
python 离散点图画法的实现
Python学习之迭代器详解
Python实战之大鱼吃小鱼游戏的实现
OpenCV实现常见的四种图像几何变换
关于Python使用turtle库画任意图的问题
Apr 01 #Python
You might like
自制短波长线天线频率预选器 - 成功消除B2K之流的镜像
2021/03/02 无线电
PHP学习笔记之二
2011/01/17 PHP
PHP轻量级数据库操作类Medoo增加、删除、修改、查询例子
2014/07/04 PHP
必须收藏的php实用代码片段
2016/02/02 PHP
php版微信公众号自定义分享内容实现方法
2016/09/22 PHP
ExtJs事件机制基本代码模型和流程解析
2010/10/24 Javascript
jQuery EasyUI API 中文文档 - Tabs标签页/选项卡
2011/10/01 Javascript
JavaScript File API实现文件上传预览
2016/02/02 Javascript
Nodejs如何复制文件
2016/03/09 NodeJs
使用jquery获取url以及jquery获取url参数的实现方法
2016/05/25 Javascript
BootStrap表单宽度设置方法
2017/03/10 Javascript
详解webpack和webpack-simple中如何引入css文件
2017/06/28 Javascript
JavaScript对JSON数据进行排序和搜索
2017/07/24 Javascript
JavaScript多线程运行库Nexus.js详解
2017/12/22 Javascript
js核心基础之闭包的应用实例分析
2019/05/11 Javascript
基于Vue实现平滑过渡的拖拽排序功能
2019/06/12 Javascript
JavaScript实现拖拽盒子效果
2020/02/06 Javascript
vue实现图书管理系统
2020/12/29 Vue.js
简单的Python抓taobao图片爬虫
2014/10/26 Python
python使用BeautifulSoup分析网页信息的方法
2015/04/04 Python
详解Python设计模式编程中观察者模式与策略模式的运用
2016/03/02 Python
python数据类型_字符串常用操作(详解)
2017/05/30 Python
火车票抢票python代码公开揭秘!
2018/03/08 Python
解决python执行较大excel文件openpyxl慢问题
2020/05/15 Python
绢花、人造花和人造花卉:BLOOM
2019/08/07 全球购物
美国小蜜蜂Burt’s Bees德国官网:天然唇部、皮肤和身体护理产品
2020/06/14 全球购物
AJAX应用和传统Web应用有什么不同
2013/08/24 面试题
骨干教师培训制度
2014/01/13 职场文书
工程管理英文求职信
2014/03/18 职场文书
自动化专业大学生职业生涯规划范文:爱拚才会赢
2014/09/12 职场文书
2014年加油站工作总结
2014/12/04 职场文书
医院保洁员岗位职责
2015/02/13 职场文书
小学四年级班务总结该怎么写?
2019/08/16 职场文书
MySQL下使用Inplace和Online方式创建索引的教程
2021/05/26 MySQL
使用Pytorch训练two-head网络的操作
2021/05/28 Python
springboot 自定义配置 解决Boolean属性不生效
2022/03/18 Java/Android