TeXworks 中的后视(正则表达式)

TeXworks 中的后视(正则表达式)

我正在使用 TeXworks (Version 0.4.5),最近接触了它的正则表达式 (regex) 功能。例如,我对语法高亮进行了一些调整,以便练习。

现在我要问的是:TeXworks 是否可能不支持后向回顾(?<= )表达式?至少在“查找和替换”对话框中?因为当我尝试在那里使用正则表达式时,它就会被标记为“无效”。此外,TeXworks 手册没有列出后向查找,但它列出了前向查找表达式。

我想要解决的实际问题: 我想用 替换\verb+BLABLA+\emph{BLABLA}我尝试搜索\+(?<=verb\+.*)并将匹配项(应该是结束的+)替换为}。然后我会搜索verb\+并将其替换为emph{

我偶然发现,大多数正则表达式不支持后置.*或“.+”,这仍然没有解答上述问题。

其次,如果不通过后视,您将如何解决实际问题?

答案1

我从未听说过这个功能,尽管它听起来确实很有趣。我只会使用正则表达式。

正则表达式的实现各不相同。由于我不熟悉 TeXworks,我无法确切地说出应该使用哪种语法,但我将给出两个示例。

在 Kile 中,我将使用类似下面的方法进行查找:

\\verb\+([^\+]*)\+ 

替换:

\\emph\{\1\}

因为sed我会用类似

s/\\verb\+\([^\+]*\)\+/\\emph{\1}/g

所以我会写类似

sed 's/\\verb\+\([^\+]*\)\+/\\emph{\1}/g' <filename.tex> > <filename-new.tex>

否则我会用

sed 's/\\verb\+\([^\+]*\)\+/\\emph{\1}/g' <filename.tex>

检查输出然后使用

sed -i 's/\\verb\+\([^\+]*\)\+/\\emph{\1}/g' <filename.tex>

执行替换。(-i但是,不要在未先检查输出的情况下使用。与编辑器不同,除非使用版本控制,否则命令行没有“撤消”功能!)

Kile 中的()\(\)sed分组保存模式的一部分。然后将其重新用于替换,\1作为回溯到被替换的字符串的相应部分。

\对原本会被解释为特殊字符而不是模式的一部分的内容进行转义。因此\\verb\\emph和是、和\+所必需的。\verb\emph+

[]匹配指定的任意一个字符。例如,将匹配、或[abc]中的任意一个。内部对此取反。因此匹配除 之外的任何字符。abc^[^\+]+

*表示零个或多个某物。因此a*b将匹配bab等等aab。因此,[^\+]*匹配任何不包含 的零个或多个字符的字符串+

相关内容