正则表达式

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

python re库

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

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

reg = re.compile(r'\d\d\d-\d\d\d-\d\d\d\d')  //在字符串的第一个引号之前加上 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"(\d\d\d)\+(\d\d\d\d)")
>>> 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对象的方法,返回匹配文本的字符串