记事本2在正则表达式搜索后插入字符

时间:2014-11-13 16:30:32

标签: regex notepad2

我在尝试执行正则表达式搜索后如何插入一些文本时遇到问题。我知道有一个替换功能,但我不是在寻找那个选项,只是插入。我使用的文本编辑器是Notepad2,但我愿意在其他文本编辑器中尝试这个。

这是我的例子。

TEST|Test2|Test3|Test4

这就是我要找的东西

Test|Test2|PrefixTest3|Test4

请注意,我正在尝试在第二个管道之后插入短语“Prefix”,并将其他所有内容保留。

我可以使用此正则表达式成功查询结果:

^[^|]*\|[^|]*|


但后来我不知道如何在搜索点之前和之后保留所有内容。有什么想法吗?

3 个答案:

答案 0 :(得分:0)

您可以简单地使用\K来丢弃先前匹配的字符。

^[^|]*\|[^|]*\|\K

然后将匹配替换为字符串prefix

DEMO

答案 1 :(得分:0)

您可以使用基于 regex 替换功能在 Notepad2 中轻松完成此操作。

查找^\([^|]*|[^|]*|\)
替换\1Prefix

<强>详情:

  • ^ - 一行的开头(Notepad2永远不会溢出行边界!)
  • \([^|]*|[^|]*|\) - 捕获与以下序列匹配的第1组:
    • [^|]* - 除|
    • 以外的零个或多个字符
    • | - 一个文字(是的,不需要转义,转义和未转义|匹配文字|)管道符号
    • [^|]*| - 见上文,转到第二个|

替换包含\1反向引用,用于插入捕获组1捕获的内容。 enter image description here

注意Notepad2正则表达式引擎非常有限。以下是Notepad2 documentation says

的内容
  

Notepad2仅支持正则表达式的有限子集,由Scintilla源代码编辑组件的内置引擎提供。它的优点是占地面积非常小。目前还没有计划集成更高级的正则表达式引擎,但这可能是未来开发的一种选择。

     

注意:正则表达式搜索仅限于单行。

此外,您可以参考Scintilla RESearch.cxx file中描述支持语法的内联注释。请记住,Notepad2 S&amp; R工具中使用的正则表达式类型是 POSIX ,并且并非所有描述的Scintilla正则表达式功能都可以在该工具中使用。

请注意,Notepad2似乎不支持交替和限制量词(类似于Lua模式),但\w将Unicode字母与ASCII字母匹配。可悲的是,我无法使?量词工作。

答案 2 :(得分:-1)

^([^|]*\|[^|]*\|)

试试这个。$1prefix。请参阅demo.Just捕获第一个组,然后将其用于替换。第一组可以通过$1访问。

http://regex101.com/r/pQ9bV3/11