Python正则表达式 |
您所在的位置:网站首页 › pyrhon正则表达式 › Python正则表达式 |
正则表达式是一个特殊的字符序列,可以帮助您使用模式中保留的专门语法来匹配或查找其他字符串或字符串集。 正则表达式在UNIX世界中被广泛使用。 注:很多开发人员觉得正则表达式比较难以理解,主要原因是缺少使用或不愿意在这上面花时间。 re模块在Python中提供对Perl类正则表达式的完全支持。如果在编译或使用正则表达式时发生错误,则re模块会引发异常re.error。 在这篇文章中,将介绍两个重要的功能,用来处理正则表达式。 然而,首先是一件小事:有各种各样的字符,这些字符在正则表达式中使用时会有特殊的意义。 为了在处理正则表达式时避免混淆,我们将使用:r'expression'原始字符串。 匹配单个字符的基本模式 编号 表达式 描述 1 a, X, 9, matchObj.group() : dogs 4.搜索和替换使用正则表达式re模块中的最重要的之一是sub。 模块 re.sub(pattern, repl, string, max=0)此方法使用repl替换所有出现在RE模式的字符串,替换所有出现,除非提供max。此方法返回修改的字符串。 示例 #!/usr/bin/python3 import re phone = "2018-959-559 # This is Phone Number" # Delete Python-style comments num = re.sub(r'#.*$', "", phone) print ("Phone Num : ", num) # Remove anything other than digits num = re.sub(r'\D', "", phone) print ("Phone Num : ", num)当执行上述代码时,会产生以下结果 - Phone Num : 2018-959-559 Phone Num : 2018959559 5.正则表达式修饰符:选项标志正则表达式文字可能包含一个可选修饰符,用于控制匹配的各个方面。 修饰符被指定为可选标志。可以使用异或(|)提供多个修饰符,如前所示,可以由以下之一表示 - 编号 修辞符 描述 1 re.I 执行不区分大小写的匹配。 2 re.L 根据当前语言环境解释单词。这种解释影响字母组(\w和\W)以及字边界行为(\b和\B)。 3 re.M 使$匹配一行的结尾(而不仅仅是字符串的结尾),并使^匹配任何行的开始(而不仅仅是字符串的开头)。 4 re.S 使一个句点(.)匹配任何字符,包括换行符。 5 re.U 根据Unicode字符集解释字母。 此标志影响\w,\W,\b,\B的行为。 6 re.X 允许“cuter”正则表达式语法。 它忽略空格(除了一个集合[]内部,或者用反斜杠转义),并将未转义的#作为注释标记。 6.正则表达模式除了控制字符(+ ? . * ^ $ ( ) [ ] { } | \),所有字符都与其自身匹配。 可以通过使用反斜杠将其转换为控制字符。 7.正则表达式示例字符常量 编号 示例 说明 1 python 匹配“python”。字符类 编号 示例 说明 1 [Pp]ython 匹配“Python”或“python” 2 rub[ye] 匹配“ruby”或“rube” 3 [aeiou] 匹配任何一个小写元音 4 [0-9] 匹配任何数字; 如[0123456789] 5 [a-z] 匹配任何小写ASCII字母 6 [A-Z] 匹配任何大写的ASCII字母 7 [a-zA-Z0-9] 匹配上述任何一个 8 [^aeiou] 匹配除小写元音之外的任何东西 9 [^0-9] 匹配数字以外的任何东西特殊字符类 编号 示例 说明 1 . 匹配除换行符以外的任何字符 2 \d 匹配数字:[0-9] 3 \D 匹配非数字:[^0-9] 4 \s 匹配空格字符:[\t\r\n\f] 5 \S 匹配非空格:[^\t\r\n\f] 6 \w 匹配单字字符: [A-Za-z0-9_] 7 \W 匹配非单字字符: [A-Za-z0-9_]重复匹配 编号 示例 说明 1 ruby? 匹配“rub”或“ruby”:y是可选的 2 ruby* 匹配“rub”加上0个以上的y 3 ruby+ 匹配“rub”加上1个或更多的y 4 \d{3} 完全匹配3位数 5 \d{3,} 匹配3位或更多位数字 6 \d{3,5} 匹配3,4或5位数非贪婪重复 这匹配最小的重复次数 - 编号 示例 说明 1 贪婪重复:匹配“ perl>” 2 非贪婪重复:在“ perl”中匹配“”用圆括号分组 编号 示例 说明 1 \D\d+ 没有分组:+重复\d 2 (\D\d)+ 分组:+重复\D\d对 3 ([Pp]ython(,)?)+ 匹配“Python”,“Python,python,python”等反向引用 这与以前匹配的组再次匹配 - 编号 示例 说明 1 ([Pp])ython&\1ails 匹配python和pails或Python和Pails 2 (['"])[^\1]*\1 单引号或双引号字符串。\1匹配第一个分组匹配。 \2匹配任何第二个分组匹配等备择方案 python|perl - 匹配“python”或“perl”rub(y|le) - 匹配 “ruby” 或 “ruble”Python(!+|\?) - “Python”后跟一个或多个! 还是一个?锚点 这需要指定匹配位置。 编号 示例 说明 1 ^Python 在字符串或内部行的开头匹配“Python” 2 Python$ 在字符串或内部行的结尾匹配“Python” 3 \APython 在字符串的开头匹配“Python” 4 Python\Z 在字符串的末尾匹配“Python” 5 \bPython\b 在字词的边界匹配“Python” 6 \brub\B \B是非字词边界:在“rube”和“ruby”中匹配“rub”,而不是单独匹配 7 Python(?=!) 匹配“Python”,如果跟着感叹号。 8 Python(?!!) 匹配“Python”,如果没有感叹号后面。带括号的特殊语法 编号 示例 说明 1 R(?#comment) 匹配“R”。其余的都是注释 2 R(?i)uby 匹配“uby”时不区分大小写 3 R(?i:uby) 同上 4 `rub(?:y le))` 仅组合而不创建\1反向引用上一篇: Python面向对象(类和对象) 下一篇: Python+MySQL数据库操作(PyMySQL) |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |