python之路——第二块(re模块)

re模块,用于对python的正则表达式的操作。

字符:

  . 匹配除换行符以外的任意字符
  w 匹配字母或数字或下划线或汉字
  s 匹配任意的空白符
  d 匹配数字
   匹配单词的开始或结束
  ^ 匹配字符串的开始
  $ 匹配字符串的结束

次数:

  * 重复零次或更多次
  + 重复一次或更多次
  ? 重复零次或一次
  {n} 重复n次
  {n,} 重复n次或更多次
  {n,m} 重复n到m次

首先,最常用的匹配方法有:

re.match(pattern, string, flags=0)    从起始位置开始根据模型去字符串中匹配指定内容,匹配单个

import re
a = re.match("d","7a1234u123uu888asf123")
print(a.group())

  结果是7,如果首字符不是数字,会报错,匹配不到

  • 正则表达式
  • 要匹配的字符串
  • 标志位,用于控制正则表达式的匹配方式

re.search(pattern, string, flags=0)   根据模型去字符串中匹配指定内容,匹配单个

import re
a = re.search("d","a1234u123uu888asf123")
print(a.group())

  结果是1,首字符是字母,也可以匹配得到

re.findall(pattern, string, flags=0)    上述两中方式均用于匹配单值,即:只能匹配字符串中的一个,如果想要匹配到字符串中所有符合条件的元素,则需要使用 findall。

import re
a = re.findall("d","a1234u123uu888asf123")
print(a)

  结果是['1', '2', '3', '4', '1', '2', '3', '8', '8', '8', '1', '2', '3'],以列表的形式输出,不用group。

re.sub(pattern, repl, string, count=0, flags=0)    用于替换匹配的字符串

import re
c = "a1234u123uu888asf123"
a = re.sub("d+","DZK",c)
print(a)

  结果是aDZKuDZKuuDZKasfDZK,将所有匹配到的内容替换成DZK。

re.split(pattern, string, maxsplit=0, flags=0)      根据指定匹配进行分组

content = "1+2+3+4"
new_content = re.split('+', content)
print(new_content)

  结果是['1', '2', '3', '4'],这里的是转义符号,根据+号将匹配到的分开

content = "1+2-3*4/5+6"
new_content = re.split('[+-*/]', content)
print(new_content)

  结果是['1', '2', '3', '4', '5', '6'],这里需要加上括号

原文地址:https://www.cnblogs.com/japhi/p/6924875.html