gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 01:24:13 25 4
gpt4 key购买 nike

我有一个 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com