为何String.replaceAll(".$", "")会删除字符串最后字符?求".$",含义解析
正则表达式 ".$" 解析与
String.replaceAll(".$", "") 行为说明 一、正则表达式 ".$" 的含义
拆解来看:
.:正则中的通配符,默认匹配任意单个字符(不包含换行符,除非开启DOTALL模式)$:正则锚点,专门匹配字符串的结束位置(也就是最后一个字符的后方)
把两者组合起来,".$"的作用就是:匹配字符串末尾的那个任意单个字符——因为$锚定了结尾位置,.只能匹配到结尾前的最后一个字符,不会匹配其他位置的字符。
二、为什么 String.replaceAll(".$", "") 会删除最后一个字符
String.replaceAll() 方法的逻辑是:用第二个参数的字符串,替换掉原字符串中所有匹配第一个参数正则的子串。
这里的正则".$"只会命中原字符串的最后一个字符(因为$的锚定限制,没有其他位置能满足匹配条件),将其替换为空字符串"",自然就相当于把最后一个字符删掉了。
补充说明
- 如果原字符串是空字符串,这个操作不会产生任何变化
- 默认情况下,
.不匹配换行符,如果你的字符串最后一位是换行,想用这个正则删除的话,需要开启DOTALL模式,写成(?s).$,其中(?s)是开启该模式的标记
内容的提问来源于stack exchange,提问作者terishishi
相关产品推荐
相关产品推荐

