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

正则表达式:带特定字符例外的组否定匹配实现咨询

正则匹配:排除特定模式但允许其接指定字符的情况

可以实现,只需修改原正则的负向前瞻逻辑,让它仅排除**\.\s(点+空格)后面不是§**的情况。

原正则的问题

原代码中的正则 start((?!\.\s).)*end 会直接排除所有包含\.\s的内容,无法区分\.\s后是否接§,所以不符合需求。

解决方案正则

re.search(r'start((?!\.\s(?!§)).)*end', string)

正则逻辑解释

  • (?!\.\s(?!§)) 是嵌套负向前瞻:
    1. 内层(?!§) 表示“\.\s后面不是§”的情况
    2. 外层的(?!...) 则会排除这种情况——也就是说,只有当\.\s后面不是§时,才会触发不匹配;如果\.\s后面紧跟§,则属于允许的例外,不会被排除
  • ((?!\.\s(?!§)).)* 表示逐个字符匹配,同时确保每一步都不触发上述排除条件

验证示例

匹配的字符串

string = 'start abc abc abc.end. '
string = 'start abc abc abc. §end '
  • 第一个字符串中没有\.\s,符合匹配条件
  • 第二个字符串中的\.\s后面紧跟§,属于例外情况,因此匹配

不匹配的字符串

string = 'start abc abc abc. end. '

这里的\.\s后面是end的开头字符e,不是§,因此被正则排除,不匹配

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 11:31:04