Notepad++ regex 如何替换第三次出现的斜线并绕过第一次和第二次?

问题描述

我有如下字符串。
ABC//DEG//IJK//LMN//OPQ//rstuvwxyz
BCA//EGD//JKI//MNL//PQO//stuvwxyzr
ACB//DGE//IJK//LNM//OQP//rstuvwxyz
ABC//DEG//IJK//LMN//OPQ//rstuvwxyz
CAB//GDE//KIJ//NLM//QOP//rstuvwxyz
BAC//EDG//JIK//MLN//POQ//rstuvwxyz

我想要这样,

ABC//DEG//IJK\\LMN//OPQ//rstuvwxyz
BCA//EGD//JKI\\MNL//PQO//stuvwxyzr
ACB//DGE//IJK\\LNM//OQP//rstuvwxyz
ABC//DEG//IJK\\LMN//OPQ//rstuvwxyz
CAB//GDE//KIJ\\NLM//QOP//rstuvwxyz
BAC//EDG//JIK\\MLN//POQ//rstuvwxyz

我试过了
找出^.+?\K//
替换为:\\\\
但这只会改变第一次出现的斜线,
我已经试过了,
查找内容^.+\K//
替换为:\\\\
这将替换每行末尾的最后一个斜杠..
我也试过 {3} 带数字的大括号,但没有任何好处...... 在此先感谢您的帮助....

解决方法

你可以使用

<div id="container-floating">
  <section align="">
    <div class="rt-container">
      <div class="col-rt-12">
        <div class="container-fluid">
          <div class="colum_full column">
            <div class="cc-rockmenu">
              <div class="rolling">
                <a class="rolling-link" data-toggle="modal" data-target="#ReportIssueModal">
                  <figure class="rolling_icon"><img src="https://efp.i-r.dk/img/megaphone.png" style="width: 35px; height: 35px;" border="0"></figure>
                  <span><font style="color: #FFFFFF;">Report Problem</font><br><font style="color: #FFFFFF; font-size: 12px;"><i>Some text here!</i></font></span>
                </a>
              </div>
            </div>
          </div>
        </div>
      </div>
    </div>
  </section>
</div>

替换为 ^(?:.*?\K//){3} 。请参阅regex demo online

详情

  • \\\\ - 一行的开始
  • ^ - 除换行符以外的任何零个或多个字符出现三次,尽可能少,然后 (?:.*?\K//){3}(匹配重置运算符)丢弃到目前为止匹配的所有文本,然后 {{ 1}} 子串只保留在匹配值中。

查看演示和设置截图:

enter image description here

,

如果示例数据中只有大写字符 A-Z,则可以使用字符类 [A-Z]+

^(?:[A-Z]+//){2}[A-Z]+\K//
  • ^ 字符串开头
  • (?:[A-Z]+//){2} 重复 2 次匹配大写字符 A-Z 和 //
  • [A-Z]+\K// 匹配 1+ 个大写字符 A-Z,清除匹配缓冲区并匹配 //

Regex demo

在替换中使用 \\\\