![TexDef 中的错误:正则表达式中未转义的左括号已被弃用](https://linux22.com/image/336846/TexDef%20%E4%B8%AD%E7%9A%84%E9%94%99%E8%AF%AF%EF%BC%9A%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%E4%B8%AD%E6%9C%AA%E8%BD%AC%E4%B9%89%E7%9A%84%E5%B7%A6%E6%8B%AC%E5%8F%B7%E5%B7%B2%E8%A2%AB%E5%BC%83%E7%94%A8.png)
最近使用时遇到了一些警告texdef
。当然,命令本身运行良好。
运行命令:texdef TeX
产生以下错误消息:
Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/^\\\@protected\@testopt { <-- HERE ?\\.*? }? *(\\\\.*?) / at /usr/local/bin/texdef line 391.
Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/^\\\@testopt { <-- HERE ?(\\.*?) }?/ at /usr/local/bin/texdef line 394.
如果我没记错的话,这与 PERL 有关。
这是只发生在我的电脑上,还是发生在所有人身上?
我正在运行 MacOSX El Capitan,texdef
版本 1.7b,perl
版本 v5.22.1
答案1
未转义的花括号是 Perl 正则表达式中的特殊字符,用于指示要匹配的先前字符、表达式或捕获组的编号。例如,s/h{2}/h/g;
将是一个替换表达式,它将每个双“h”字符替换为一个字符。为了向 Perl 澄清您的花括号不应以这种方式考虑,而是应作为文字字符进行匹配,您需要使用反斜杠对其进行转义。