regex flag

定义一些规则,比如是否忽略大小写,是否多行

应用

re.M

在MULTILINE模式下match()只匹配字符串的开头,而使用search()与以'^'开头的正则表达式匹配每行的开头
re.match('X', 'A\nB\nX', re.MULTILINE)  # No match
re.search('^X', 'A\nX\nX', re.MULTILINE)  # Match

re.X

a = re.compile(r"""\d +  # the integral part
                       \.    # the decimal point
                       \d *  # some fractional digits""", re.X)
b = re.compile(r"\d+\.\d*")

在字符串里指定flag

(?aiLmsux)
(?号后面跟着’a’,‘i’,‘L’,‘m’,‘s’,‘u’,'x’的一个或多个字母)。这些字母设置相应的标志:re.A(仅ASCII匹配),re.I(忽略大小写),re.L(依赖于语言环境),re.M(多行),re.S(点匹配全部) ,re.U(Unicode匹配)和re.X(详细),用于整个正则表达式。这些标志的作用在模块内容中有具体的描述。事实上,这些标志可以通过flag参数传给正则表达式,也可以像这样直接写进正则表达式里面。

(?aiLmsux-imsx:...)

(来自’a’,‘i’,‘L’,‘m’,‘s’,‘u’,‘x’的零个或多个字母,可选地后面跟着’ - ‘,后面跟着一个或多个来自’’,‘m’,‘s’,‘x’)。字母设置或删除相应的标志.,比如,你想要找superMAN对前面的super的大小写无所谓,但要求MAN一定是大写,可以这样写 (?i)super(?-i:MAN)这样 sUpeRMAN能匹配,而superMan则不能匹配

API

flag描述
re.A == re.ASCII使\w,\W,\b,\B,\d,\D,\s和\S执行仅ASCII匹配而不是完全Unicode匹配。
re.I == re.IGNORECASE执行不区分大小写的匹配; 像[A-Z]这样的表达式也将匹配小写字母。
re.L == re.LOCALE根据当前语言环境,使\ w,\ W,\ b,\ B和不区分大小写的匹配。
re.M == re.MULTILINE指定时,模式字符’^‘匹配字符串的开头和每行的开头(紧跟在每个换行符之后); 并且模式字符’KaTeX parse error: Expected group after '^' at position 35: …个换行符之前)。默认情况下,'^̲'只匹配字符串的开头,''只匹配字符串的末尾
re.S == re.DOTALL‘.’ 特殊字符完全匹配任何字符,包括换行符; 没有这个标志,’.’ 将匹配除换行符之外的任何内容。
re.X == re.VERBOSE该标志允许您通过一种编辑模式来编写正则表达式,

参考:
https://www.jianshu.com/p/147fab022566

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值