Python正则表达式函数,常量和异常

Python正则表达式函数,常量和异常

Python正则表达式定义了几个函数,常量和一个异常。其中一些功能是用于编译正则表达式的全功能方法的简化版本。大多数非平凡的应用程序始终使用已编译的表单。

常量

re.A/re.ASCII

使\w,\W,\b,\B,\d,\D,\s和\S执行仅ASCII匹配,而不是完全Unicode匹配。这仅对Unicode模式有意义,而对于字节模式,则忽略。
对应于inline标志(?a)。
请注意,为了向后兼容,re.U标志仍然存在(及其同义词re.UNICODE和其嵌入的对等物(?u)),但是在Python 3中它们是多余的,因为默认情况下字符串(和Unicode)的匹配项是Unicode; 不允许字节匹配)。

re.DEBUG

显示有关已编译表达式的调试信息。没有相应的inline标志。

re.I/re.IGNORECASE

匹配不区分大小写; [A-Z]之类的表达式也将匹配小写字母。完全的Unicode匹配(例如Ü匹配ü)也可以使用,除非使用re.ASCII标志禁用非ASCII匹配。除非还使用了re.LOCALE标志,否则当前语言环境不会更改此标志的作用。
对应于inline标志(?i)。
当Unicode模式[a-z]或[A-Z]与IGNORECASE标志结合使用时,它们将匹配52个ASCII字母和4个其他非ASCII字母:‘İ’(U + 0130,拉丁大写字母I,带有上方的点),“ı”(U + 0131,拉丁小写字母无点i),“ ſ”(U + 017F,拉丁小写字母long s)和“ K”(U + 212A,开尔文符号)。如果也使用了ASCII标志,则仅匹配字母“ a”至“ z”和“ A”至“ Z”。

re.L/re.LOCALE

该常量使\w,\W,\b,\B和不区分大小写的匹配取决于当前的语言环境。该标志只能与字节模式一起使用。不建议使用此标志,因为语言环境机制非常不可靠,它一次仅处理一种“区域性”,并且仅适用于8位语言环境。默认情况下,Python 3中已为Unicode(str)模式启用了Unicode匹配,并且能够处理不同的语言环境/语言。
对应于inline标志(?L)。

re.M/re.MULTILINE

当指定这个常量时,模式字符’^'在字符串的开头和每行的开头(紧随每个换行符之后)进行匹配;模式字符“ $”在字符串的末尾和每行的末尾(紧接在每个换行符的前面)进行匹配。默认情况下,“ ^”仅在字符串的开头匹配,“ $”仅在字符串的末尾并且在字符串的末尾紧接换行符(如果有)之前。
对应于inline标志(?m)。

re.S/re.DOTALL

标记为“.”特殊字符完全匹配任何字符,包括换行符;没有此标志,“.”将匹配换行符以外的任何内容。
对应于inline标志(?S)。

re.X/re.VERBOSE

该标志允许将模式的逻辑部分分开,并添加注释,从而使正则表达式看起来更美观,更易读。模式中的空格将被忽略,除非在字符类中,或者在前加一个未转义的反斜杠,或者在诸如*?、(?:或(?P<…>。当一行含有字符#,而且它不在字符类中,在其前面也没有未转义的反斜杠,则将忽略所有从最左端的#字符到行尾的字符。
对应于inline标志(?x)。

函数

re.search(pattern, string, flags=0)

扫描字符串以查找正则表达式模式,得到匹配项的第一个位置,然后返回相应的匹配对象。如果字符串中找不到相应的模式匹配,则返回None。这与在字符串中的某个点找到零长度匹配不同。
例子 一

  1 import re

  2
  3 pattern="[0-9a-fA-F]+--[0-9A-Fa-f]+"
  4 text_str="00feABC9--19Fe0025    addr:0x15Fc00--1600Ffcc"
  5 res = re.search(pattern, text_str);
  6 if res:
  7     print "String:  " + text_str
  8     print res.group()
  9     print "start:"+str(res.start()) + "  end:"+str(res.end())
 10
 11 text_str="00feABC9-?-19Fe0025    addr:0x15Fc00--1600Ffcc"
 12 res = re.search(pattern, text_str);
 13 if res:
 14     print "String:   " + text_str
 15     print res.group()
 16     print "start:"+str(res.start()) + "  end:"+
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值