正则表达式

正则表达式详解
本文详细介绍了正则表达式的各种元素及其用法,包括边界匹配、一般字符、已定义字符、匹配数量、逻辑分组等,并通过实例进行了解释。
一、边界匹配
  • '^' : 匹配开头如 '^\d' 必须以数字开头才能匹配到。"3siwu"
  • '$' : 匹配结尾如 '[a-z]$' 只能匹配到小写字母结尾的字符串。 "3423Az"

  • '\A' 只从字符开头匹配,re.search("\Aabc","Aabc") 是匹配不到的。同 ^
  • '\Z' 匹配字符结尾,同$

  • "\b" :不会消耗任何字符只匹配一个位置,常用于匹配单词边界 如 我想从字符串中"This is Regex"匹配单独的单词 "is" 正则就要写成 "\bis\b"

   \b 不会匹配is 两边的字符,但它会识别is 两边是否为单词的边界

  • "\B" 匹配不是单词开头或结束的位置
二、一般字符
  • '.' 点匹配除\n之外的任意一个字符,(python re模块中,若指定flag DOTALL,则匹配任意字符,包括换行)
  • '\': 转义字符,改变后一个字符代表的意思,如'\AA' 就是只能匹配大写A开头。同理只有这样才能匹配到斜杠 '\'
  • '[]': 中括号,表示匹配里面里面任意一个字符。如果[^abcd] 以^开头表示取反,匹配除了abcd以外的任意字符。[0-9a-zA-Z] 表示匹配0到9和a到z及A到Z
三、已被定义了的字符
  • "\d": 匹配数字,'sjgk8jge' 使用 'd' 就可以匹配出里面的数字8。'\d' 范围为[0-9]
  • "\D" :匹配非数字,字母或者特殊字符都能匹配

  • "\w":匹配[A-Za-z0-9]
  • '\W' 匹配非[A-Za-z0-9]

四、放在字符后表示匹配数量
  • '*' 匹配*号前的字符0次或多次,re.findall("ab*","cabb3abcbbac") 结果为['abb', 'ab', 'a']
  • '+' 匹配前一个字符1次或多次,re.findall("ab+","ab+cd+abb+bba") 结果['ab', 'abb']
  • '?' 匹配前一个字符1次或0次
  • '{m}' 匹配前一个字符m次
  • '{n,m}' 匹配前一个字符n到m次,re.findall("ab{1,3}","abb abc abbcbbb") 结果'abb', 'ab', 'abb']
五、逻辑分组
  • '|' 匹配|左或|右的字符,re.search("abc|ABC","ABCBabcCD").group() 结果'ABC'
  • '(...)' 分组匹配,re.search("(abc){2}a(123|456)c", "abcabca456c").group() 结果 abcabca456c
六、好用的升级版分组匹配

"(exp)" 匹配exp,并捕获文本到自动命名的组里

"(?exp)" 匹配exp,并捕获文本到名称为name的组里

"(?:exp)" 匹配exp,不捕获匹配的文本,也不给此分组分配组号

以下为零宽断言

"(?=exp)" 匹配exp前面的位置

  如 "How are you doing" 正则"(?.+(?=ing))" 这里取ing前所有的字符,并定义了一个捕获分组名字为 "txt" 而"txt"这个组里的值为"How are you do";

"(?<=exp)" 匹配exp后面的位置

  如 "How are you doing" 正则"(?(?<=How).+)" 这里取"How"之后所有的字符,并定义了一个捕获分组名字为 "txt" 而"txt"这个组里的值为" are you doing";

"(?!exp)" 匹配后面跟的不是exp的位置

  如 "123abc" 正则 "\d{3}(?!\d)"匹配3位数字后非数字的结果

"(?<!exp)" 匹配前面不是exp的位置

  如 "abc123 " 正则 "(?<[0-9])123" 匹配"123"前面是非数字的结果也可写成"(?!<\d)123"

转载于:https://www.cnblogs.com/shiqi17/p/9471651.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值