regex - 我如何使用 vim 替换所有匹配正则表达式的整行

标签 regex vim replace tex

我有一个 tex 文件,其中包含如下几个段落:

\paragraph{name1}

...

\paragraph{name2}

...

现在我想用项目替换所有的“段落”,就像:

\item
...

\item
...

为了达到这个目的,我尝试了很多命令,最后我使用了这个: (请注意,我使用“a:”到“z:”作为段落名称)

**:% s/\\paragraph[{][a-z]:[}]/\\item/g**

而且我认为这既不美观也不高效。我试图匹配包含“段落”的行,但不知何故只有这个词被替换了。现在我可以用

删除所有这些行
**:% g/_*paragraph_*/d**

有没有更好的方式以相同的方式执行替换?(或者说替换所有包含特定单词的行)

最佳答案

您的第一次尝试几乎是正确的。而不是这个

:% s/\paragraph[{][a-z]:[}]/\item/g

使用这个

:% s/^\\paragraph{[a-z|0-9]\+}$/\\item/g

让我们一 block 一 block 地分解它:

  1. ^ 字符匹配行的开头,因此您不会匹配这样的内容:

    一些文本\paragraph{abc}

  2. 我们之所以使用\\而不是\是因为\是一个转义字符,所以要匹配它,我们转义转义字符。

  3. [a-z|0-9]\+ 将匹配一个或多个 a-z 或 0-9 字符,我假设您的段落名称由这些字符组成。如果您需要大写字母,您可以执行类似 [a-zA-Z|0-9]\+ 的操作。

  4. 最后,我们将表达式锚定到带有 $ 的行的末尾,这样它就不会匹配不完全符合此模式的行。

    <

关于regex - 我如何使用 vim 替换所有匹配正则表达式的整行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38127993/

相关文章:

python - vim - 你让我无法找到合适的 Python 库

r - R中使用CamelCase分隔字符串中的标题和副标题

Java 正则表达式 后向查找

javascript - 如何在dom中制作一些特定值的字符串?

vim - :buffers?遇到的模式名称是什么

vim - 如何使两个用户定义的突出显示一起工作

c# - 匹配一个字符串,直到它遇到一个 '('

python - 迭代数据帧并替换为另一个数据帧中的值

JavaScript 表达式和替换规则

c++ - Arduino 替换 : with _