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

Jupyter Notebook执行egrep命令含{}正则量词时无返回结果问题

问题原因

  • Jupyter 中单行 ! 开头的 shell 执行命令内置了 Python 变量插值逻辑,所有被 {} 包裹的内容会被优先识别为 Python 变量占位符,Jupyter 会尝试替换为对应变量值后再传给 shell 执行,因此你正则中的 {1,2} 不会原样传递给 egrep,导致正则匹配失效,无输出结果。
  • 手动添加反斜杠转义 \{1,2\} 无效的原因是转义符会先被 shell 层解析消耗,最终传递给 egrep 的正则仍然不符合预期,无法匹配到对应内容。

解决方案

任选以下任意一种方案即可解决问题:

  1. 将包含花括号的正则部分用单引号包裹,规避 Jupyter 的插值逻辑:
!echo "one two tree"|egrep --color 't[w,r](o|e){1,2}'
  1. 使用 %%bash 单元格魔术命令代替单行 ! 执行,该模式下 Jupyter 不会对内容做变量插值,会直接传递给 bash 执行:
%%bash
echo "one two tree"|egrep --color "t[w,r](o|e){1,2}"
  1. 先将正则定义为 Python 字符串变量,再通过 Jupyter 原生的插值逻辑传入命令:
pattern = r"t[w,r](o|e){1,2}"
!echo "one two tree"|egrep --color "{pattern}"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 19:36:06