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

作者:小基基o_O 时间:2021-09-23 10:43:41 

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)

来源:https://blog.csdn.net/Yellow_python/article/details/80543937

标签:python,正则表达式,flags
0
投稿

猜你喜欢

  • Discuz7 的提示效果如何实现

    2010-01-13 13:10:00
  • SQL SERVER 的SQL语句优化方式小结

    2024-01-25 02:11:12
  • ASP.NET Core Web API 教程Project Configuration

    2024-06-05 09:32:41
  • php判断正常访问和外部访问的示例

    2024-05-11 09:45:46
  • python中各种路径设置的方法详解

    2022-12-09 23:58:09
  • PYTHON实现SIGN签名的过程解析

    2021-08-09 13:29:05
  • MySql数据库基本命令集会

    2011-08-05 18:43:23
  • Python 获取div标签中的文字实例

    2023-03-27 01:53:53
  • 数据库性能优化三:程序操作优化提升性能

    2024-01-14 08:58:49
  • 合并SQL脚本文件的方法分享

    2011-09-30 11:13:03
  • node+axios实现下载外网文件到本地

    2024-05-05 09:20:48
  • IE7下动态创建Iframe时,去除边框的办法

    2009-01-19 13:56:00
  • 随机6+1选号码摇奖程序

    2008-07-18 13:15:00
  • 介绍27款经典的CSS框架

    2011-03-04 16:24:00
  • python判断文件是否存在,不存在就创建一个的实例

    2022-04-29 02:28:55
  • 详解python使用金山词霸的翻译功能(调试工具断点的使用)

    2021-06-27 03:33:52
  • pytorch使用 to 进行类型转换方式

    2022-10-05 23:28:27
  • Python pandas中read_csv参数示例详解

    2021-05-14 06:17:12
  • Python3爬虫里关于代理的设置总结

    2021-05-05 23:58:12
  • python自动化测试之从命令行运行测试用例with verbosity

    2021-09-20 07:32:16
  • asp之家 网络编程 m.aspxhome.com