regex - LaTeX 需要简单的正则表达式

标签 regex latex

在我的 LaTeX 文件中,我确实有数千次出现以下构造:

$\displaystyle{...math goes here...}$

我想用

替换这些
\mymath{...math goes here...}

请注意,$ 消失了,但花括号仍然存在——如果不是尾随 $,这将是一个基本的查找和替换。如果我知道任何正则表达式,我相信它会毫无问题地处理这个问题。我需要什么正则表达式来实现这一点?

非常感谢。

编辑:出现了一些问题和疑问,所以让我澄清一下:

  1. 是的,$\displaystyle{ ... }$ 可以在同一行出现多次。
  2. 不,嵌套的 }$(例如 $\displaystyle{...{more math}$...}$)不能发生。我的意思是,如果你把它放在 \mbox 之类的东西中,我想它可以,但我无法想象为什么有人会在 $\displaySTLye{}$ 构造,其目的是显示与文本内联的数学。无论如何,这不是我曾经做过或可能会做的事情。
  3. 我尝试使用 perl 建议,但当 shell 没有提出异议时,文件仍然不受影响。
  4. 我尝试使用 sed 建议,但 shell 反对“`('”附近的意外标记。我以前从未使用过 sed(并且“man sed”是迟钝的),但这是我所做的:导航到包含 .tex 文件并键入“sed s/\$\\displaystyle({[^}]+})\$/\\mymath\1/g *.tex”的目录。不走运. 如何使用 sed 做我想做的事?

再次感谢大家提供的帮助。

最佳答案

在使用 REGEX 进行这种类型的替换时要非常小心 因为理论上的答案是 REGEX 无法匹配这种类型的模式。

REGEX 是一个有限状态机;它不包含下推堆栈,所以 它不能与嵌套结构一起使用,例如“{...math goes here...}”,如果 有任何嵌套的可能性,例如“{more math}$” 可以作为“数学到这里”字符串的一部分出现。你至少需要一个 描述这种结构的上下文无关语法 - 状态机 就是不切!

话虽如此,您仍然可以使用 REGEX 完成此操作 前提是您的“数学在这里”字符串都不比 状态机可以处理什么。

试一试....但要注意结果!

关于regex - LaTeX 需要简单的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2147477/

相关文章:

regex - 在表单字段中使用多个模式

java - 替换正则表达式之间的所有字符

latex - 在宏内使用逐字环境

json - 修改 vscode 中的 settings.json 以在 Latex Workshop 中为 pdflatex 添加 shell 转义标志

latex - latex 错误:环保未定义

c# - 创建动态内容文档(如发票、送货单)的最简单方法

javascript - dojo、过滤选择、查询和排除字符串

c# - 正则表达式在 .NET 中查找标记值

matlab - Latex变量自动化: writing variables for Latex directly from Stata and MATLAB

c++ - 没有匹配函数调用 ‘regex_search(...)'