在Latex中,我有很多带有123
订阅的数学表达式,现在,我需要将它们更改为\alpha \beta \gamma
而不是123
。
例如:
$E_{223}$
至$E_{\beta\beta\gamma}$
和
$E_{31}$
至$_{\gamma\alpha}$
但是,我也有功率指数,不应该改变,例如$E^3_{112}$
应改为$E^3_{\alpha\alpha\beta}$.
有没有办法使用正则表达式来简化此任务?我知道unix和perl的一些正则表达式,但似乎不适合这个问题。
谢谢你!
答案 0 :(得分:0)
我不是100%熟悉Latex,但典型的正则表达式看起来像这样:
(?<\^)#
#
为1,2或3的位置。然后,在您的替换中,您将使用\alpha
,\beta
和\gamma
替换匹配项。 (?<\^)
是一个负面的后瞻,只是在没有^
字符(您的电源指示符)前面时才会替换该数字的实例。
如果典型的正则表达式不允许,我会删除我的答案。
答案 1 :(得分:0)
我不知道你正在使用什么编辑器或正则表达式引擎,但这是我在Perl-ish正则表达式中使用的基本思想:
替换它:
(?<=\{\d*)1(?=\d*\})
有了这个:
\\alpha
我想你也想设置g
标志。
不确定我是否有正确的转义语法(自从我触及Perl以来已经有一段时间了),但我想是的。
根据需要重复\ beta,\ gamma等。
答案 2 :(得分:0)
试试这些:
(?<!\^\d|\d{2}|\d{3}|\d{4})1
替换为\alpha
(?<!\^\d|\d{2}|\d{3}|\d{4})2
替换为\beta
(?<!\^\d|\d{2}|\d{3}|\d{4})3
替换为\gamma
编辑:这些正则表达式确保它不会替换指数中的数字。如果你有负指数,你可能需要调整它们以检查可选的-
。
编辑2:@QTax指出你不能使用可变长度的lookbehinds。
后视的Subexp必须是固定的字符长度。 但顶级允许不同的字符长度 只有替代品。
答案 3 :(得分:0)
在Perl中,您可以执行以下操作:
$text =~ s@\$\w[^${\s]*_{\K([123]+)(?=}\$)@
local $_ = $1;
s/1/\\alpha/g; s/2/\\beta/g; s/3/\\gamma/g;
$_
@ge;