正则表达式

Posted keepcuriosity

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正则表达式相关的知识,希望对你有一定的参考价值。

regex用于匹配相应的类型,通常用于对于文本中的字符进行匹配和提取,以下只介绍python re模块的常见方法和regex的常见通配符

python re库

1. re.compile(pattern, flags=0)

编译一个正则表达式对象,在利用该对象去调用match()、search()等方法

reg = re.compile(r‘ddd-ddd-dddd‘)  //在字符串的第一个引号之前加上 r,可以将该字符串标记为原始字符串,它不包括转义字符
2. re.match(pattern, string)

如果字符串开头的零个或多个字符与正则表达式模式匹配,则返回相应的匹配对象。

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

查找传入的整个string,寻找该正则表达式的所有匹配。如果字符串中没有找到该正则表达式模式,search()方法将返回None。如果找到了该模式, search()方法将返回一个Match对像

4. re.findall(pattern, string, flags=0)

将返回一组字符串,包含被查找字符串中的所有匹配

5. 匹配分组
  • (...)分组匹配括号内的正则表达式,执行匹配后可使用group()检索匹配内容
  • (){}花括号中为匹配()中分组的个数,为数字

match对象调用group()方法,group(0)返回所有匹配的分组,groups()返回包含匹配的所有子组的元组

eg:

>>> import re
>>> reg = re.compile(r"(ddd)+(dddd)")
>>> match = reg.search("this is 345+7890")
>>> match.group(0)
‘345+7890‘
>>> match.group(1)
‘345‘
>>> match.group(2)
‘7890‘
>>> match.groups()
(‘345‘, ‘7890‘)
>>> type(match)
<class ‘_sre.SRE_Match‘>

6.常见的pattern中匹配的通配字符的含义

(注:若想让通配符表示其原有的含义,需使用  转义)

  • * 星号之前的分组,可以在文本中出现任意次。它可以完全不存在,或一次又一次地重复
  • ? 匹配问号之前的分组零次或一次
  • +(加号)匹配一次或多次
  • d 0 到 9 的任何数字
  • D 除 0 到 9 的数字以外的任何字符
  • w 任何字母、数字或下划线字符(可以认为是匹配“单词”字符)
  • W 除字母、数字和下划线以外的任何字符 s 空格、制表符或换行符(可以认为是匹配“空白”字符)
  • S 除空格、制表符和换行符以外的任何字符

总结:

  • 1.导入re
  • 2.使用re.compile()创建一个regex对象
  • 3.使用regex对象相关方法去匹配string,返回一个match对象
  • 4.调用match对象的方法,返回匹配文本的字符串

以上是关于正则表达式的主要内容,如果未能解决你的问题,请参考以下文章

markdown 正则表达式模式片段

正则表达式匹配特定的 URL 片段而不是所有其他 URL 可能性

循环通过 python 正则表达式匹配

asp.net 使用正则表达式验证包含打开/关闭括号片段的属性字符串

攻破难啃的骨头-正则表达式(转)

正则表达式的贪婪和非贪婪模式