python正则一篇搞掂( 五 )

res3 = re.search('h', url)print(res3)运行结果:
 

  • <re.Match object; span=(4, 5), match='h'>
4.3 re.sub 
    •  
    re.sub(pattern, repl, string, count=0, flag)
    • 将表达式匹配到的部分替换为制定字符串 , 返回替换后的新字符串
    • pattern: 正则表达式
    • repl: 用来替换的字符串
    • string: 被匹配的字符串
    • count: 替换次数 , 默认为 0 , 表示全部替换
    • flags: 标志位 , 表示匹配模式
phone = '2004-959-559 # 这是一个国外电话号码'# 删除字符串中的python注释num = re.sub('#.*', '', phone)print(num)运行结果:
  • 2004-959-559
# 删除连接符号 -num = re.sub('-', '', num)print(num) 运行结果:
  • 2004959559
4.4 re.findall 
  •   re.findall(pattern, string, flags=0
    • 在字符串中找到正则表达式匹配的所有子串 , 返回一个列表 , 匹配失败则返回空列表
    • pattern: 正则表达式
    • string: 被匹配的字符串
    • flags: 标志位 , 表示匹配模式
res1 = re.findall('day', line, re.I)res2 = re.search('day', line, re.I)res3 = re.match('day', line, re.I)print('findall', res1)print('search', res2.group())print('search', res3)运行结果:
  • findall ['Day', 'day']search Daysearch None
match,search,findall 的区别
  • match 从头开始匹配 , 成功返回匹配对象 , 失败返回 None
  • search 只匹配第一个 , 成功返回匹配对象 , 失败返回 None
  • findall 匹配所有 , 成功返回所有匹配到的字符串组成的列表 , 失败返回空列表
4.5 re.compile
    • re.compile(pattern, [flags])
      • compile 函数用于编译正则表达式 , 生成一个正则表达式对象 , 该对象调用 findall , search , match , sub 等方法
      • pattern: 正则表达式
      • flags: 标志位 , 表示匹配模式
        面向对象编程时使用
attern = re.compile('day', re.I)res1 = pattern.findall(line)res2 = pattern.search(line)res3 = pattern.match(line)print('findall', res1)print('search', res2.group())print('match', res3)运行结果:
  • findall ['Day', 'day']search Daymatch None
三、正则表达式超全速查手册校验数字的表达式数字:^[0-9]*$n位的数字:^d{n}$至少n位的数字:^d{n,}$m-n位的数字:^d{m,n}$零和非零开头的数字:^(0|[1-9][0-9]*)$非零开头的最多带两位小数的数字:^([1-9][0-9]*)+(.[0-9]{1,2})?$带1-2位小数的正数或负数:^(-)?d+(.d{1,2})?$正数、负数、和小数:^(-|+)?d+(.d+)?$有两位小数的正实数:^[0-9]+(.[0-9]{2})?$有1~3位小数的正实数:^[0-9]+(.[0-9]{1,3})?$非零的正整数:^[1-9]d*$ 或 ^([1-9][0-9]*){1,3}$ 或 ^+?[1-9][0-9]*$非零的负整数:^-[1-9][]0-9"*$ 或 ^-[1-9]d*$非负整数:^d+$ 或 ^[1-9]d*|0$非正整数:^-[1-9]d*|0$ 或 ^((-d+)|(0+))$非负浮点数:^d+(.d+)?$ 或 ^[1-9]d*.d*|0.d*[1-9]d*|0?.0+|0$非正浮点数:^((-d+(.d+)?)|(0+(.0+)?))$ 或 ^(-([1-9]d*.d*|0.d*[1-9]d*))|0?.0+|0$正浮点数:^[1-9]d*.d*|0.d*[1-9]d*$ 或 ^(([0-9]+.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*.[0-9]+)|([0-9]*[1-9][0-9]*))$负浮点数:^-([1-9]d*.d*|0.d*[1-9]d*)$ 或 ^(-(([0-9]+.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*.[0-9]+)|([0-9]*[1-9][0-9]*)))$浮点数:^(-?d+)(.d+)?$ 或 ^-?([1-9]d*.d*|0.d*[1-9]d*|0?.0+|0)$ 校验字符的表达式汉字:^[u4e00-u9fa5]{0,}$


推荐阅读