如何使用 VSCode 正则表达式查找所有不带 ~ 的 \cite?

How to use VSCode regexp to find all ocurrences of \cite without ~?

我需要在我论文的几个文件中找到所有出现的 any text\cite{...} 并将它们更改为 any text~\cite{...}。但我不明白 VSCode 搜索正则表达式的工作原理。

我试过 ^[!~]\cite 但它似乎不理解这种不是 ~.

的字符的表示法

有人可以帮忙吗?

您可以使用

([^~]|^)(\cite)

替换为~,见regex demo.

详情:

  • ([^~]|^) - 第 1 组:除 ~ ([^~]) 或 (|) 行首之外的任何字符
  • (\cite) - 第 2 组:\cite 文本。

~ 替换模式使用组 1 + ~ + 组 2 值来替换匹配项。

Wiktor 的替代答案可能是:

(?<!~)(\cite)

并替换为:

~

(?<!~) 是一种否定的后视,迫使正则表达式只匹配以波浪号 (~) 开头的 而不是 的内容。 (\cite) 按字面匹配文本,其中括号创建捕获组。

在替换中首先添加你想要添加的波浪号,然后是 这是一个反向引用,意思是“获取捕获组 1 并放在这里”。

组从 0(即整场比赛)开始编号。并且从外到内,从左到右编号。负面回顾不是捕获组。