如何搜索某些文本并将其替换为该文本的第二个或第三个实例?

问题描述 投票:0回答:1

如果这个问题措辞简陋,那我就不好了。我希望如果需要的话可以对其进行编辑。我不知道如何更好地表达它。无论如何。

我有一些这样的文本行:

1.  "C:\OverPark\Casting\What You Are\L - New Takes\Justice and Truth\Dialogue\The Blessing Tree.wav" (77.3 MB)

2.  "C:\OverPark\Casting\What You Are\L - New Takes\Infinity\External\Momha.wav" (34.9 MB)

3.  "C:\OverPark\Casting\What You Are\L - New Takes\Intellect and Love\Music\The Most High.wav" (37.8 MB)

我需要替换从数字及其点之后到第六个反斜杠的每一行。

我知道如何从某处选择到行尾。 我知道如何从某个地方搜索到某个文本。

但是,如果像本例一样,有许多字符与您需要在选择之间结束的字符相同怎么办?

我不能使用像 e/M 这样的 to 命令,因为反斜杠之前和之后的文件夹在文件路径中不断变化。但斜线的数量似乎是相同的。有时我需要简单地删除它,有时我需要用一些东西替换它。

如何告诉搜索跳过一定数量的反斜杠或类似的内容?或者也许有更好的方法来解决这个问题?

最终应该是这样的,除非我用什么东西替换它。

1.Dialogue\The Blessing Tree.wav" (77.3 MB)

2.External\Momha.wav" (34.9 MB)

3.Music\The Most High.wav" (37.8 MB)

我可以通过两个步骤来实现这一点,首先跳过行中一定数量的反斜杠实例,如下所示:

^(?:.*?\\){5}

我可以将其替换为行中不存在的唯一字符,然后进行另一次搜索并从行开头替换为该唯一字符。我只是想看看是否可以一次性完成。如果可以的话,我想使用一个命令来实现这一点。

预先感谢您的所有意见和帮助!

regex notepad++
1个回答
0
投票

要匹配某项 6 次,请正好重复 6 次:

^\d+\.          # At the start of a line, match an integer and a dot,
\K              # then forfeit that and start the match anew;
(?:             # from that position, match
  [^\\]+\\      # one or more non-backslash then a backslash,
){6}            # collectively repeated 6 times.

在 regex101.com 上尝试一下

如果您愿意,您还可以替换倒数第二个反斜杠之前的所有内容:

^\d+\. # Idem; \K # .+\\ # from that position, match a sequence of characters that ends with a backslash (?= # which must be followed by [^\\]+\\ # a level, a backslash, [^\\]+$ # and another level at the end of line. )
在 regex101.com 上尝试一下

请注意,这里的“级别”只是一系列非反斜杠;它非常适合这个特定的用例,但在另一个用例中可能不起作用。

© www.soinside.com 2019 - 2024. All rights reserved.