1

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

这是我的例子。

TEST|Test2|Test3|Test4

这就是我要找的

Test|Test2|PrefixTest3|Test4

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

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

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


但是我不知道如何保留搜索点之前和之后的所有内容。有任何想法吗?

4

3 回答 3

0

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

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

然后用字符串替换匹配项prefix

演示

于 2014-11-13T16:39:39.810 回答
0

您可以使用基于正则表达式的替换功能在Notepad2中轻松完成此操作。

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

详情

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

替换包含一个\1反向引用,它插入使用捕获组 1 捕获的内容。 在此处输入图像描述

请注意,Notepad2 正则表达式引擎非常有限。这是Notepad2 文档所说的:

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

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

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

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

于 2017-06-08T08:12:10.083 回答
-1
^([^|]*\|[^|]*\|)

试试这个。替换为 。查看演示。$1prefix只需捕获第一组,然后将其用于替换。第一组可以通过 访问$1

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

于 2014-11-13T16:32:45.603 回答