我正在使用 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