如何使用正则表达式删除每行最后一个字符?
解决正则删除每行最后一个字符的问题
你用.$没生效的核心原因是正则默认的匹配模式:默认情况下$只会匹配整个文本的末尾,而不是每行的结尾。只要开启多行模式,让$匹配每行的结束位置,这个表达式就能正常工作。
具体实现方案
不管你用什么工具(Python、VS Code、Notepad++等),核心思路一致:
- 正则表达式:
.$(或者(.)$,效果完全一致) - 替换内容:留空(即删除匹配到的字符)
- 必须开启多行模式(不同工具的设置方式略有区别)
常用场景示例:
- Python代码实现
import re input_content = """helmut_rankl:20Suzuki12 helmut1195:wasserfall1974 helmut1951:roller11""" # 用re.M开启多行模式,替换每行最后一个字符 result = re.sub(r'.$', '', input_content, flags=re.M) print(result)
- VS Code/Notepad++等编辑器操作
- 打开查找替换功能,勾选「正则表达式」选项
- 查找框输入:
.$ - 替换框留空
- VS Code需额外勾选「多行」选项,Notepad++默认支持多行模式的正则匹配
- 点击「全部替换」即可得到目标结果
关于.$匹配字母/数字的疑问
.在正则里本来就匹配任意单个字符(除了换行符),字母、数字、符号都能匹配。之前没成功完全是因为$没匹配到每行结尾,和.本身的匹配能力无关。
内容的提问来源于stack exchange,提问作者Audacity Shop
相关产品推荐
相关产品推荐

