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

求适配sed的<latex>$→$</latex>匹配正则,解决现有正则不兼容问题

适配sed的正则表达式及修正命令

要让sed正确匹配<latex>$\\rightarrow$</latex>这类字符串,需解决shell转义干扰和sed正则特殊字符处理两个核心问题,具体修正如下:

问题根源

原命令失效的关键原因:

  1. zsh双引号环境中,\$会被shell解析为字面$,导致sed实际收到的正则里,$被当作行尾锚点而非目标字符。
  2. echo的字符串未正确转义,zsh会尝试展开$\\\rightarrow这类“变量名”,输出的原始字符串不符合预期。

修正后的命令及正则

方案一:用单引号隔离shell转义(推荐)

用单引号包裹sed表达式和echo字符串,彻底避免shell解析特殊字符:

echo '<latex>$\\rightarrow$</latex>' | sed -E -e '#<latex>\$([^$]*)\$</latex>#d'

此处sed使用的正则为:#<latex>\$([^$]*)\$</latex>#

  • #作为正则分隔符(规避原字符串中/的干扰)
  • \$匹配字面美元符号
  • ([^$]*)匹配两个$之间的任意非$内容

方案二:双引号内双重转义

若必须使用双引号,需对\和$做双重转义,绕过shell解析:

echo "<latex>\$\\rightarrow\$</latex>" | sed -E -e "#<latex>\\\$([^\\\$]*)\\\$</latex>#d"

该方案中sed实际接收的正则与方案一一致,仅通过转义方式适配双引号环境。

执行任意一种方案,都会返回空字符串,符合预期。

内容的提问来源于stack exchange,提问作者Denis Bitouzé

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 18:55:40