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

如何编写匹配*.c但排除*.in.c的正则表达式?

解决匹配.c后缀但排除.in.c文件的正则问题

我来帮你搞定这个正则问题!你需要的是匹配直接以.c结尾的文件,但排除那些以.in.c结尾的,核心就是要精准区分这两种后缀的差异。

推荐的正则表达式方案

这里有两种可靠的写法,你可以根据自己的需求选择:

  1. 负向后行断言写法
^.+?(?<!\.in)\.c$
  • ^:匹配字符串开头
  • .+?:匹配任意非空字符(非贪婪模式,避免不必要的过度匹配)
  • (?<!\.in):负向后行断言,确保当前位置(也就是.c的点前面)的内容不是.in,直接排除.in.c的情况
  • \.c$:匹配结尾的.c后缀
  1. 负向前瞻写法
^(?!.*\.in\.c$).+\.c$
  • ^(?!.*\.in\.c$):负向前瞻,先检查整个字符串不会以.in.c结尾
  • .+\.c$:再匹配任意非空字符结尾的.c文件

为什么你原来的写法没生效?

你提到负向预查没用,大概率是预查的位置或者范围没找准——比如如果预查没有锚定到字符串结尾,就没法精准排除.in.c这种后缀。上面的两种写法都是把排除逻辑和结尾的.c匹配绑定起来,确保只有真正的.c后缀才会被匹配。

测试验证

  • ✅ 匹配的文件:a.c、hello.c、etc.c、test123.c
  • ❌ 不匹配的文件:a.in.c、hello.in.c、etc.in.c、file.txt

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:06:33