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

CL-PPCRE多行模式失效:跨行匹配代码块失败求助

问题分析与解决

你的问题出在对CL-PPCRE模式参数的理解偏差上:

  • :multi-line-mode t 的作用是让 ^ 和 $ 匹配每一行的开头与结尾,并不能让 . 匹配换行符。
  • 要让正则表达式里的 . 覆盖多行内容(匹配换行),需要开启 :single-line-mode t(对应其他正则引擎的DOTALL模式)。

修正后的扫描器

将扫描器代码修改为:

(defvar scanner (cl-ppcre:create-scanner "```(.*?)```" :single-line-mode t))

验证效果

对字符串y执行替换操作后,就能正常提取出包含换行的内容了:

(cl-ppcre:regex-replace scanner y "\\1")
;; 返回结果为 "
;;              hi
;;            "

如果需要去除内容前后的空白,可调整正则为 ```````\s*(.?)\s``````,或者后续单独处理空白字符。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 23:17:34