当前位置: 首页 > news >正文

断言(Assertion)中常用的正则表达式

1. 边界类断言

  • ​**^ (开头)​**: 匹配字符串起始位置。
    ^abc   // 匹配以"abc"开头的字符串
  • ​**$ (结尾)​**: 匹配字符串结束位置。
    abc$   // 匹配以"abc"结尾的字符串
  • ​**\b (单词边界)​**: 匹配单词与非单词字符(如空格、标点)之间的位置。
    \bcat\b  // 匹配独立的单词"cat"(前后无其他字母)
  • ​**\B (非单词边界)​**: 匹配非单词边界(如连续字母之间)。
    \Bcat\B  // 匹配"scatter"中的"cat"(前后均有字母)

2. 前瞻断言(Lookahead)​

  • ​**(?=...) (正向前瞻)​**: 后续必须匹配表达式。
    a(?=bc)  // 匹配后面紧跟着"bc"的"a"(如"abc")
  • ​**(?!...) (负向前瞻)​**: 后续不能匹配表达式。
    a(?!bc)  // 匹配后面不是"bc"的"a"(如"ad")

​3. 后顾断言(Lookbehind)

  • ​**(?<=...) (正向后顾)​**: 前面必须匹配表达式。
    (?<=a)bc  // 匹配前面是"a"的"bc"(如"abc")
  • ​**(?<!...) (负向后顾)​**: 前面不能匹配表达式。
    (?<!a)bc  // 匹配前面不是"a"的"bc"(如"xbc")

※ 注意:后顾断言在部分编程语言中不支持复杂表达式(如 Python 需固定长度,JavaScript 部分版本有限制)。


4. 示例应用场景

  1. 验证密码强度​(至少一个大写字母、数字):
    ^(?=.*[A-Z])(?=.*\d).{8,}$  
    // 匹配8位以上,且含大写字母和数字的密码
  2. 提取不在引号中的关键词​:
    \bkeyword\b(?=(?:[^"]*"[^"]*")*[^"]*$)
    // 匹配未在双引号内的"keyword"
  3. 匹配特定分隔符之间的内容​:
    (?<=@)\w+  // 匹配"@username"中的"username"

注意事项

  • 兼容性​:后顾断言(Lookbehind)在旧环境(如 IE)中可能不被支持。
  • 零宽度​:断言只验证位置,不占用字符。
  • 性能​:复杂断言可能影响正则效率,建议测试优化。

通过合理使用断言,可以精确控制匹配逻辑,处理复杂边界条件或依赖上下文的内容验证

相关文章:

  • 《汇编语言:基于X86处理器》第2章 x86处理器架构
  • Neo4j 入门到精通(Cypher语言详解)
  • 第 1 章,[标签 Win32] :第一个 WIn32 程序,头文件
  • pthread_once函数使用场景与原理
  • 设计模式精讲 Day 5:原型模式(Prototype Pattern)
  • NAT 与代理服务器 -- NAT,NAPT,正向代理,反向代理
  • 强化学习之 DQN、Double DQN、PPO
  • 黑马python(八)
  • springboot使用nacos注册中心、配置中心的例子
  • AndroidView的简单使用
  • 物制药自动化新突破:EtherNet/IP转Modbus TCP网关模块实战应用
  • 【AI Study】第四天,Pandas(6)- 性能优化
  • 系统思考与核心竞争力
  • 【AI论文】ReasonMed:一个370K的多智能体生成数据集,用于推进医疗推理
  • OpenStack 入门体验
  • wireshark过滤器的使用
  • 21.加密系统函数
  • 海豚人工智能与大数据实验室的指导和系统内的指导文件是不一样的​
  • Pandas 中的 Period 对象
  • Android 中 解析 JSON 字符串的几种方式
  • 济南做网站费用/黄山seo公司
  • 郑州做网站茂睿科技/河北百度竞价优化
  • 沙发网站建设/百度检索入口
  • 做外国的独立网站怎么推广/app推广策略
  • 字画价格网站建设方案/数据统计网站有哪些
  • 汕尾东莞网站建设/应用商店aso优化