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

如何编写正则匹配下划线一侧且前后无字母数字的N/D/S字符

调整后可用的正则表达式

r"(_[NDS](?![a-zA-Z0-9]))|((?<![a-zA-Z0-9])[NDS]_)"

原正则的问题

你原来的写法中使用了(?=[^a-zA-Z0-9])正向肯定预查,要求当前位置后方必须存在一个非字母数字的实体字符,无法适配字符串开头、结尾这类没有后续/前置字符的边界场景,因此匹配不到第一个字符串结尾的_N和第二个字符串开头的S_。

匹配逻辑说明

调整后的正则用否定预查替代了原来的肯定预查:

  • 匹配_[NDS]结构时,用(?![a-zA-Z0-9])校验N/D/S的后方不存在字母数字,同时兼容字符串结尾的场景
  • 匹配[NDS]_结构时,用(?<![a-zA-Z0-9])校验N/D/S的前方不存在字母数字,同时兼容字符串开头的场景
  • 可以完全命中你需要的三个匹配项:第一个字符串的_N、第二个字符串的S_和_D

内容的提问来源于stack exchange,提问作者Abdullah Raihan Bhuiyan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 04:15:10