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

如何使用正则表达式匹配字符串从末尾数第n位的字符

正则实现:匹配字符串倒数第n位指定字符

直接上可用的正则模式,完全匹配反向计数的规则要求:

目标字符(?=.{n}$)

模式里的n直接替换成需要的倒数偏移量,目标字符替换成要校验的字符即可。

匹配逻辑

这个写法用了正则的正向先行断言,不需要分组捕获,匹配效率很高:

  • 正向先行断言(?=规则)只会校验当前字符后面的内容是否符合规则,不会额外消耗匹配字符
  • 断言部分.{n}$的含义是:当前字符后面刚好有n个任意字符,且这n个字符之后就是字符串结尾,刚好卡准倒数第n位的位置

效果验证

完全对齐给出的所有测试场景:

测试字符串:molly

  • n=0(最后一位):正则为y(?=.{0}$)(等价于y$),匹配到末尾的y,符合预期
  • n=1(倒数第二位):正则为l(?=.{1}$),匹配到y前面的l,符合预期
  • n=3(倒数第四位):正则为o(?=.{3}$),o后面刚好跟着l、l、y三个字符到结尾,匹配到o,符合预期
  • 判定场景:校验倒数第二位是不是l,用l(?=.{1}$)匹配molly能命中,返回true,符合要求

测试字符串:terminator

  • 判定场景1:校验倒数第四位是不是b,对应正则b(?=.{3}$),该位置实际字符是a,匹配失败返回false,符合要求
  • 判定场景2:校验倒数第四位是不是a,对应正则a(?=.{3}$),可以正常命中,返回true,符合要求

注意事项

  • 如果待匹配字符串包含换行符,要开启正则的单行模式(Dotall模式),让模式里的.可以匹配换行符,否则跨行场景会匹配失效
  • 如果要匹配的目标字符是正则特殊符号(比如.、*、?、$、^这类),要先给字符加反斜杠转义,比如要匹配倒数第2位是.,正则要写成\.(?=.{1}$)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 15:24:21