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:"+