Notepad++ 每 3 次和 4 次迭代进行替换

Notepad++ 每 3 次和 4 次迭代进行替换

我正在使用 notepad++,想知道是否可以替换 HTML 行中的每第 3 次和第 4 次迭代。

原始代码如下:

<div class="ui-bar ui-bar-d"
<div class="ui-bar ui-bar-d"
<div class="ui-bar ui-bar-d"
<div class="ui-bar ui-bar-d"

重复发生...

我需要将每个第二个块更改为如下所示。

<div class="ui-bar ui-bar-d"
<div class="ui-bar ui-bar-d"
<div class="ui-bar bg ui-bar-d"
<div class="ui-bar bg ui-bar-d"

重复发生...

是否有任何正则表达式可以做到这一点?

答案1

我假设你的 HTML 看起来像

<div class="ui-bar ui-bar-d" ... and something else ... (newline)
<div class="ui-bar ui-bar-d" ... and something else ... (newline)
<div class="ui-bar ui-bar-d" ... and something else ... (newline)
<div class="ui-bar ui-bar-d" ... and something else ... (newline)
... etc...

并假设您希望保留该... and something else ...部分。

在搜索字段中尝试

(<div class="ui-bar ui-bar-d".*\r\n)(<div class="ui-bar ui-bar-d".*\r\n)<div class="ui-bar ui-bar-d"(.*\r\n)<div class="ui-bar ui-bar-d"(.*\r\n)

用。。。来代替

\1\2<div class="ui-bar bg ui-bar-d"\3<div class="ui-bar bg ui-bar-d"\4

根据您使用的是 Windows 还是 UNIX 类型的 EOL(即换行符),您可能需要将全部更改\r\n\n


更通用的仅替换ui-bar ui-bar-d子句的正则表达式:

(.*ui-bar ui-bar-d.*\r\n)(.*ui-bar ui-bar-d.*\r\n)(.*)ui-bar ui-bar-d(.*\r\n)(.*)ui-bar ui-bar-d(.*\r\n)

并替换为

\1\2\3ui-bar bg ui-bar-d\4\5ui-bar bg ui-bar-d\6

相关内容