正则表达式需求:匹配Peter与Parker,含关键词时调整匹配范围上限
正则表达式规则调整方案
需求说明
原正则Peter[\s\S]{0,20}Parker用于匹配Peter之后0-20字符范围内出现Parker的内容。现需新增限制:
- 仍要求
Parker在Peter之后0-20字符内 - 若该范围内出现指定关键词(如
Hulk),则Parker必须出现在关键词之前,否则不匹配
调整后的正则表达式
Peter(?:(?!Hulk)[\s\S]){0,20}Parker
规则解析
Peter:匹配起始字符串(?:(?!Hulk)[\s\S]){0,20}:匹配0-20个任意字符(含换行),同时通过负前瞻(?!Hulk)确保这段字符中不会出现Hulk,从根本上避免Hulk出现在Peter与Parker之间的情况Parker:匹配目标结束字符串
示例验证
- test1 = "My name is Peter, I like spiders very much Parker":不匹配,
Peter与Parker间距超过20字符 - test2 = "My name is Peter, Jason Hulk Parker":不匹配,
Hulk出现在Peter与Parker之间,触发限制规则 - test3 = "My name is Peter Jason Parker and I don't like the Hulk":匹配,
Parker在Peter之后0-20字符范围内,且Hulk不在该区间内
内容的提问来源于stack exchange,提问作者xxgaryxx
相关产品推荐
相关产品推荐

