You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

正则表达式问题:如何校验Teacher后首个Name对应指定内容?

正则匹配问题:校验Teacher后第一个Name字段值为ABC

需求场景

需要校验字符串中,Teacher之后出现的第一个Name:对应的内容必须是ABC。

示例目标匹配字符串:

Teacher: ID: 123 Something: Something Name: ABC Age: 40 Student1: Name: XYZ Age: 12 Student2: Name: ABC

问题:原有正则误判

尝试使用惰性匹配正则:

/(Teacher:(.*?)Name: ABC)/

但该正则会在如下场景误判为匹配成功:

Teacher: Name: EFG Age: 40 Student1: Name: XYZ Age: 12 Student2: Name: ABC

原因是惰性匹配仅保证匹配到最短的符合结尾的字符串,但允许中间出现其他Name:字段,导致它会跳过前面的Name: EFG,匹配到最后面的Name: ABC,不符合“第一个Name字段为ABC”的要求。

解决方案:使用负向前瞻避免中间出现Name字段

正确的正则应该限制Teacher到第一个Name:之间不能出现其他Name:字段,使用负向前瞻实现:

/(Teacher:(?:(?!Name:).)*Name: ABC)/

正则说明

  • (?:(?!Name:).)*:非捕获组,匹配任意数量的字符,但每一个字符的后续都不是Name:的开头,确保中间不会出现其他Name:字段
  • 这样就能精准匹配Teacher之后第一个出现的Name:值为ABC的情况,避免误判。

内容的提问来源于stack exchange,提问作者killsteenkill

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 18:25:40