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

为何String.replaceAll(".$", "")会删除字符串最后字符?求".$",含义解析

正则表达式 ".$" 解析与 String.replaceAll(".$", "") 行为说明

一、正则表达式 ".$" 的含义

拆解来看:

  • .:正则中的通配符,默认匹配任意单个字符(不包含换行符,除非开启DOTALL模式)
  • $:正则锚点,专门匹配字符串的结束位置(也就是最后一个字符的后方)

把两者组合起来,".$"的作用就是:匹配字符串末尾的那个任意单个字符——因为$锚定了结尾位置,.只能匹配到结尾前的最后一个字符,不会匹配其他位置的字符。

二、为什么 String.replaceAll(".$", "") 会删除最后一个字符

String.replaceAll() 方法的逻辑是:用第二个参数的字符串,替换掉原字符串中所有匹配第一个参数正则的子串。
这里的正则".$"只会命中原字符串的最后一个字符(因为$的锚定限制,没有其他位置能满足匹配条件),将其替换为空字符串"",自然就相当于把最后一个字符删掉了。

补充说明

  • 如果原字符串是空字符串,这个操作不会产生任何变化
  • 默认情况下,.不匹配换行符,如果你的字符串最后一位是换行,想用这个正则删除的话,需要开启DOTALL模式,写成(?s).$,其中(?s)是开启该模式的标记

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 22:01:01