先行断言(lookahead)和后行断言(lookbehind)

简介: 先行断言(lookahead)和后行断言(lookbehind)

正则表达式的先行断言后行断言一共有4种形式

格式 中文名称 英文名称
?=pattern 零宽正向先行断言 zero-width positive lookahead assertion
?!pattern 零宽负向先行断言 zero-width negative lookahead assertion
?<=pattern 零宽正向后行断言 zero-width positive lookbehind assertion
?<!pattern 零宽负向后行断言 zero-width negative lookbehind assertion


名词释义

  • 零宽zero-width
    见文知义, 零宽 表示一种零宽度的匹配,它匹配到的内容不会保存到匹配结果中去,最终匹配结果只是一个位置而已。
  • 正向(positive)和负向(negative)
    不等于( != )、逻辑非( ! )都是用 !号 来表示,所以有 !号 的形式表示不匹配、负向
    !号 换成 =号 ,就表示匹配、正向
  • 先行(lookahead)和后行(lookbehind)
    正则表达式引擎在执行字符串和表达式匹配时,会从头到尾从前到后)连续扫描字符串中的字符,设想有一个扫描指针指向字符边界处并随匹配过程移动。
    先行断言,是当扫描指针位于某处时,引擎会尝试匹配指针还未扫过的字符,先于指针到达该字符,故称为先行
    后行断言,引擎会尝试匹配指针已扫过的字符,后于指针到达该字符,故称为后行


含义

( ?=pattern ) 正向先行断言

代表字符串中的一个位置, 紧接该位置之后 的字符序列 能够匹配pattern


例如对” a regular expression ”这个字符串,要想匹配 regular 中的 re ,但不能匹配 expression 中的 re ,可以用” re(?=gular) ”,该表达式限定了 re 右边的位置,这个位置之后是 gular ,但并不消耗 gular 这些字符,将表达式改为” re(?=gular). ”,将会匹配 reg元字符. 匹配了 g ,括号这一砣匹配了 eg 之间的位置。


( ?!pattern ) 负向先行断言

代表字符串中的一个位置, 紧接该位置之后 的字符序列 不能匹配pattern


例如对” regex represents regular expression ”这个字符串,要想匹配除 regexregular 之外的 re ,可以用” re(?!g) ”,该表达式限定了 re 右边的位置,这个位置后面不是字符 g


负向和正向的区别,就在于该位置之后的字符能否匹配括号中的表达式


( ?<=pattern ) 正向后行断言

代表字符串中的一个位置, 紧接该位置之前 的字符序列 能够匹配pattern


例如对” regex represents regular expression ”这个字符串,有4个单词,要想匹配单词内部的 re ,但不匹配单词开头的 re ,可以用” (?<=\w)re ”,单词内部的 re ,在 re 前面应该是一个单词字符。


之所以叫后行断言,是因为正则表达式引擎在匹配字符串和表达式时,是从前向后逐个扫描字符串中的字符,并判断是否与表达式符合,当在表达式中遇到该断言时,正则表达式引擎需要往字符串前端检测已扫描过的字符,相对于扫描方向是向后的


(?<!pattern) 负向后行断言

代表字符串中的一个位置, 紧接该位置之前 的字符序列 不能匹配pattern。 例如对” regex represents regular expression ”这个字符串,要想匹配单词开头的 re ,可以用” (?<!\w)re ”。单词开头的 re ,在本例中,也就是指不在单词内部的 re ,即 re 前面不是单词字符。当然也可以用” \bre ”来匹配。

目录
相关文章
|
5天前
|
人工智能 自然语言处理 安全
阿里云AI数智鉴密:AI 生成内容如何拿到一张"防篡改的身份证"
隐形水印 + C2PA签名:让AI生成内容“持证上岗”。
1125 0
|
13天前
|
人工智能 自然语言处理 安全
阿里云千问办公、Qoder Teams、Qoder CN区别与选择指南:模型能力、适用场景与最新活动参考
本文聚焦阿里云2026年推出的三款自研AI办公产品,清晰拆解千问办公、Qoder Teams、Qoder CN的差异化定位与能力边界:千问办公主打职场全场景提效,支持自然语言指令一键完成PPT生成、数据分析等高频办公任务;Qoder Teams面向程序员团队,深度整合AI代码生成、团队协同与企业知识库能力;Qoder CN则专为金融、政务等强合规场景打造,实现数据不出境与VPC私有化部署。文章同步给出分场景选型指南与最新活动定价,帮助不同类型的企业按需组合产品,实现业务岗、研发岗与强合规场景的AI能力全覆盖。
3751 4
阿里云千问办公、Qoder Teams、Qoder CN区别与选择指南:模型能力、适用场景与最新活动参考
|
5天前
|
人工智能 运维 BI
阿里云千问办公QwenWork深度解析:基于Qwen3.8,六大核心能力重构企业全自动化工作流与计费选型指南
传统AI办公工具大多停留在对话问答、文档摘要、简单文案生成层面,只能完成单点碎片化任务,无法自主拆解复杂业务流程,很难串联多工具、多文档、外部业务系统完成端到端完整工作交付。很多企业在落地AI办公的时候,需要组合多款不同工具,来回切换界面,手动复制粘贴中间结果,智能化改造落地门槛居高不下。千问办公QwenWork是整合多款智能体产品能力打造的一体化企业办公智能体平台,底层基座依托Qwen3.8大模型,打通桌面端Agent、云端Agent、企业协同Agent三种运行形态,不再局限简单问答,接收业务目标之后自主拆解任务步骤,调用各类工具,处理文档、表格、浏览器自动化、数据查询,直接输出可交付的办公
1436 0
|
5天前
|
人工智能 安全 前端开发
刚刚 GPT-6 Astra 发布,全球最强,AGI 时代到来!
OpenAI 正式推出 GPT-6 Astra 模型,带大家看看这次 GPT 有哪些提升,跟 Claude Fable 5.1 有什么差距?AI 编程能力如何?AGI 真的来了么?
621 0
|
10天前
|
人工智能 并行计算 数据可视化
秋叶ComfyUI-AKI最新整合包|完整部署教程+核心指令手册
秋叶ComfyUI-AKI一键整合包,国内适配最优、稳定性最强的商用/学习级版本:全封装虚拟环境、预装90%常用节点、内置绘世启动器与成熟工作流,免配置、零依赖、解压即用,完美兼顾新手入门与专业批量生产需求。(239字)
|
14天前
|
人工智能 Linux iOS开发
Ollama使用教程:Ollama官网下载、Ollama本地部署大模型(2026最新)
Ollama 是一款免费开源的本地大模型运行工具,支持在 Windows/macOS/Linux 上离线运行 Qwen、DeepSeek、Llama 等主流开源模型,数据不出本机、隐私安全。提供 OpenAI 兼容 API,命令行一键拉取/运行/管理模型,无需联网,无调用限制,是开发者与 AI 爱好者部署本地 AI 助手的理想选择。(239 字)