正则表达式(五)断言

1. 概述

断言是指对匹配到的文本位置有要求。

在有些情况下,我们对要匹配的文本的位置也有一定的要求。为了解决这个问题,正则中提供了一些结构,只用于匹配位置,而不是文本内容本身,这种结构就是断言。

常见的断言有三种:单词边界、行的开始或结束以及环视。

2. 单词边界

  • 使用\b 来表示单词的边界
    单词边界演示
    # python例子
     import re
     test_str = "tom asked me if I would go fishing with him tomorrow."
     re.sub(r'\btom\b', 'jerry', test_str)
    'jerry asked me if I would go fishing with him tomorrow.'
    

3.行的开始或结束

如果我们要求匹配的内容要出现在一行文本开头或结尾,就可以使用 ^ 和 $ 来进行位置界定。

3.1 作用示例

  • 日志起始行判断
  • 输入数据校验
     python例子
     import re
     re.search('\d{6}', "1234567") is not None
      True    <-- 能匹配上 (包含6位数字)
     re.search('^\d{6}', "1234567") is not None
      True    <-- 能匹配上 (6位数字开头)
     re.search('\d{6}$', "1234567") is not None
      True    <-- 能匹配上 (6位数字结尾)
     re.search('^\d{6}$', "1234567") is not None
      False   <-- 不能匹配上 (只能是6位数字)
     re.search('^\d{6}$', "123456") is not None
      True    <-- 能匹配上 (只能是6位数字)
    

4.环视

环视就是要求匹配部分的前面或后面要满足(或不满足)某种规则,有些地方也称环视为零宽断言。
环视

4.1 环视与子组

环视中虽然也有括号,但不会保存成子组。保存成子组的一般是匹配到的文本内容,后续用于替换等操作,而环视是表示对文本左右环境的要求,即环视只匹配位置,不匹配文本内容。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值