Notepad++ 正则表达式如何替换第三次出现的斜线并绕过第一条和第二条?
Notepad++ regex How to Replace third occurrence of slash & bypass the first and seconds?
我有如下字符串。
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} 大括号和数字,但没有任何好处....
在此先感谢您的帮助....
您可以使用
^(?:.*?\K//){3}
替换为\\
。见 regex demo online.
详情:
^
- 行首
(?:.*?\K//){3}
- 除换行字符外的任何零个或多个字符出现三次,尽可能少,然后 \K
(匹配重置运算符)丢弃到目前为止匹配的所有文本,然后//
子字符串只保留在匹配值中。
查看演示和设置截图:
如果示例数据中只有大写字符 A-Z,则可以使用字符 class [A-Z]+
^(?:[A-Z]+//){2}[A-Z]+\K//
^
字符串开头
(?:[A-Z]+//){2}
重复 2 次匹配大写字符 A-Z 和 //
[A-Z]+\K//
匹配 1+ 个大写字符 A-Z,清除匹配缓冲区并匹配 //
在替换中使用\\
我有如下字符串。
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} 大括号和数字,但没有任何好处....
在此先感谢您的帮助....
您可以使用
^(?:.*?\K//){3}
替换为\\
。见 regex demo online.
详情:
^
- 行首(?:.*?\K//){3}
- 除换行字符外的任何零个或多个字符出现三次,尽可能少,然后\K
(匹配重置运算符)丢弃到目前为止匹配的所有文本,然后//
子字符串只保留在匹配值中。
查看演示和设置截图:
如果示例数据中只有大写字符 A-Z,则可以使用字符 class [A-Z]+
^(?:[A-Z]+//){2}[A-Z]+\K//
^
字符串开头(?:[A-Z]+//){2}
重复 2 次匹配大写字符 A-Z 和//
[A-Z]+\K//
匹配 1+ 个大写字符 A-Z,清除匹配缓冲区并匹配//
在替换中使用\\