正则表达式② 匹配规则

正则表达式② 匹配规则

特殊字符匹配

  • 如果匹配的目标字符串中包含正则表达式特殊字符,则在表达式中元字符就想表示其本身含义时就需要
    进行 \ 处理。
  • 特殊字符:. * + ? ^ $ [] () {} | \

贪婪模式和非贪婪模式

  • 定义

    贪婪模式: 默认情况下,匹配重复的元字符总是尽可能多的向后匹配内容。比如: * + ? {m,n}

    非贪婪模式(懒惰模式): 让匹配重复的元字符尽可能少的向后匹配内容。

  • 贪婪模式转换为非贪婪模式

    在对应的匹配重复的元字符后加 ‘?’ 号即可

正则表达式分组

  • 定义

    在正则表达式中,以()建立内部分组,子组是正则表达式的一部分,可以作为内部整体操作对象。

  • 作用

    可以被作为整体操作,改变元字符的操作对象

  • 捕获组

    捕获组本质也是一个子组,只不过拥有一个名称用以表达该子组的意义,这种有名称的子组即为捕获组。
    格式: (?P<name>pattern)

注意:1.一个正则表达式中可以包含多个子组
​ 2.子组可以嵌套但是不宜结构过于复杂
​ 3.子组序列号一般从外到内,从左到右计数

正则表达式匹配原则

  1. 正确性,能够正确的匹配出目标字符串。

  2. 排他性,除了目标字符串之外尽可能少的匹配其他内容。

  3. 全面性,尽可能考虑到目标字符串的所有情况,不遗漏。

"""
示例:匹配规则
"""
#导入re模块
import re

#匹配特殊字符
result=re.findall(r'-?\d+\.\d+',"23,34.5,-9.8,-9")  #匹配正小数,负小数
print(result)   #['34.5', '-9.8']

#贪婪模式
result=re.findall(r'ab+','abbbbbbb')
print(result)   #['abbbbbbb']
#非贪婪模式  + ----> +?
result=re.findall("ab+?","abbbbbbb")
print(result)   #['ab']

#子组
result=re.search("(ab)+","ababababab")
print(result.groups())   #ababababab
#捕获子组
result=re.search(r"(?P<xing>\w+)","王思聪")
print(result.group('xing'))     #王思聪   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值