多次替换一行中的相同字符 Notepad++
Replace same character on one line multiple times Notepad++
我有很多文件,每个文件中都有一行包含以下内容(除其他外)。这条线并不总是在同一个地方,但是,它从该行的开头开始。这条线也总是不同的。
slug: bláh-téxt-hello-write-sométhing-ábout-arrow
我想用相应的字符 a 和 e 替换每次出现的特殊字符(á 和 é)。这些字符中的每一个都可以多次出现在这一行中 + 也可以出现在文档中的其他地方(不应被替换)。
所以结果是:
slug: blah-text-hello-write-something-about-arrow
我有这个:
查找:^slug: (.)((é)|(á))(.)
替换:子弹:$1(?2e)(?2a)$3
但是,这似乎一次只能替换一个字符。如何多次将其设置为 运行 直到没有字符可替换?
非常感谢您的任何见解。
你可以使用
查找内容:(?:\G(?!^)|^slug:\h*)[^\r\náé]*\K(?:(á)|é)
或者
查找内容:(?:\G(?!^)|^slug:\h*).*?\K(?:(á)|é)
替换为:(?1a:e)
详情:
(?:\G(?!^)|^slug:\h*)
- 上一场比赛结束或 slug:
然后在一行的开头有零个或多个水平空格
[^\r\náé]*
- 除 CR、LF、á
和 é
之外的零个或多个字符
.*?
- 将匹配除换行字符以外的零个或多个字符,尽可能少
\K
- 丢弃到目前为止匹配的所有文本的运算符
(?:(á)|é)
- á
(捕获到第 1 组)或 é
.
在替换中,如果第 1 组匹配,(?1a:e)
将找到的匹配项替换为 a
,否则,使用 e
。
有关使用条件替换的更多信息,请参阅我的“Swapping multiple values using conditional replacement patterns in Notepad++”YT 视频。
关于使用 \G
操作符的额外信息可以在我的另一个 YT 视频“\G anchor use cases”中找到。
我有很多文件,每个文件中都有一行包含以下内容(除其他外)。这条线并不总是在同一个地方,但是,它从该行的开头开始。这条线也总是不同的。
slug: bláh-téxt-hello-write-sométhing-ábout-arrow
我想用相应的字符 a 和 e 替换每次出现的特殊字符(á 和 é)。这些字符中的每一个都可以多次出现在这一行中 + 也可以出现在文档中的其他地方(不应被替换)。
所以结果是:
slug: blah-text-hello-write-something-about-arrow
我有这个: 查找:^slug: (.)((é)|(á))(.) 替换:子弹:$1(?2e)(?2a)$3
但是,这似乎一次只能替换一个字符。如何多次将其设置为 运行 直到没有字符可替换?
非常感谢您的任何见解。
你可以使用
查找内容:(?:\G(?!^)|^slug:\h*)[^\r\náé]*\K(?:(á)|é)
或者
查找内容:(?:\G(?!^)|^slug:\h*).*?\K(?:(á)|é)
替换为:(?1a:e)
详情:
(?:\G(?!^)|^slug:\h*)
- 上一场比赛结束或slug:
然后在一行的开头有零个或多个水平空格[^\r\náé]*
- 除 CR、LF、á
和é
之外的零个或多个字符
.*?
- 将匹配除换行字符以外的零个或多个字符,尽可能少\K
- 丢弃到目前为止匹配的所有文本的运算符(?:(á)|é)
-á
(捕获到第 1 组)或é
.
在替换中,如果第 1 组匹配,(?1a:e)
将找到的匹配项替换为 a
,否则,使用 e
。
有关使用条件替换的更多信息,请参阅我的“Swapping multiple values using conditional replacement patterns in Notepad++”YT 视频。
关于使用 \G
操作符的额外信息可以在我的另一个 YT 视频“\G anchor use cases”中找到。