替换文本时 Atom \K 替代
Atom \K alternative when replacing text
我的用例如下:我有一个 86,000 行长的文档。它出现了 5851 次管道符号。我需要每 5 次出现一次就将管道 |
更改为现在的 ]|
.
我终于为我的用例找到了正确的正则表达式 (?:(\d*|\D)*(\|)){9}\K
。我知道这一点,因为我在 Regex 101 的这个示例中构建了它。它的作用是仅选择 nth 管道并允许我仅与该管道进行交互。
如果您 increment/decrement 大括号中的数字,它会相应移动。伟大的。万岁。
但是,atom.io
(我的编辑器)称 \K
为无效转义。请问原子的首选正则表达式是什么?或者,还有更好的方法吗?
这里的重点是 \K
是一个运算符,它只是省略了当前匹配内存缓冲区中到目前为止匹配的文本。您可以在 Keep The Text Matched So Far out of The Overall Regex Match 中阅读有关 \K
的更多信息。
当您需要替换 紧接在其他字符串或文本之前的内容时,您可以简单地使用 capturing group and a backreference.
您可以使用
查找内容:^((?:[^|\r\n]*\|){4}[^|\r\n]*)\|
替换为:]|
详情
^
- 行首
((?:[^|\r\n]*\|){4}[^|\r\n]*)
- 捕获组 1(从替换模式中引用 </code>):
<ul>
<li><code>(?:[^|\r\n]*\|){4}
- 出现四次
[^|\r\n]*
- |
、CR 和 LF 以外的 0+ 个字符(CR 和 LF 是必要的,以免在下一行溢出)
\|
- 管道字符(它在正则表达式中很特殊,因此被转义)
[^|\r\n]*
- |
、CR 和 LF 以外的 0+ 个字符
\|
- 将被匹配、消耗并替换为替换模式的管道。
我的用例如下:我有一个 86,000 行长的文档。它出现了 5851 次管道符号。我需要每 5 次出现一次就将管道 |
更改为现在的 ]|
.
我终于为我的用例找到了正确的正则表达式 (?:(\d*|\D)*(\|)){9}\K
。我知道这一点,因为我在 Regex 101 的这个示例中构建了它。它的作用是仅选择 nth 管道并允许我仅与该管道进行交互。
如果您 increment/decrement 大括号中的数字,它会相应移动。伟大的。万岁。
但是,atom.io
(我的编辑器)称 \K
为无效转义。请问原子的首选正则表达式是什么?或者,还有更好的方法吗?
这里的重点是 \K
是一个运算符,它只是省略了当前匹配内存缓冲区中到目前为止匹配的文本。您可以在 Keep The Text Matched So Far out of The Overall Regex Match 中阅读有关 \K
的更多信息。
当您需要替换 紧接在其他字符串或文本之前的内容时,您可以简单地使用 capturing group and a backreference.
您可以使用
查找内容:^((?:[^|\r\n]*\|){4}[^|\r\n]*)\|
替换为:]|
详情
^
- 行首((?:[^|\r\n]*\|){4}[^|\r\n]*)
- 捕获组 1(从替换模式中引用</code>): <ul> <li><code>(?:[^|\r\n]*\|){4}
- 出现四次[^|\r\n]*
-|
、CR 和 LF 以外的 0+ 个字符(CR 和 LF 是必要的,以免在下一行溢出)\|
- 管道字符(它在正则表达式中很特殊,因此被转义)
[^|\r\n]*
-|
、CR 和 LF 以外的 0+ 个字符
\|
- 将被匹配、消耗并替换为替换模式的管道。