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

正则表达式中$与\Z匹配差异疑问:为何匹配到fly\n?

为什么$会匹配到'fly\n'?

首先得纠正一个常见误解:Python的re模块中,即使不开启多行模式(re.MULTILINE),$的匹配规则也不是只匹配字符串的绝对末尾——它会匹配两种位置:

  • 字符串的最后一个字符之后
  • 字符串末尾的换行符\n之前的位置

回到你的例子,字符串'fly\n'的结构是f-l-y-\n,$会匹配到y和\n之间的位置。正则表达式r"^den|ly$"中的ly$部分,正好能匹配字符串里的ly加上这个$的位置,所以整个'fly\n'会被匹配到。

而\Z的规则是严格匹配字符串的绝对末尾,也就是\n之后的位置。'fly\n'里ly的后面是\n,不是字符串的绝对末尾,所以ly\Z无法匹配这个字符串,只会匹配不带换行的'fly'。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 14:20:21