我在尝试执行正则表达式搜索后如何插入一些文本时遇到问题。我知道有一个替换功能,但我不是在寻找那个选项,只是插入。我使用的文本编辑器是Notepad2,但我愿意在其他文本编辑器中尝试这个。
这是我的例子。
TEST|Test2|Test3|Test4
这就是我要找的东西
Test|Test2|PrefixTest3|Test4
请注意,我正在尝试在第二个管道之后插入短语“Prefix”,并将其他所有内容保留。
我可以使用此正则表达式成功查询结果:
^[^|]*\|[^|]*|
但后来我不知道如何在搜索点之前和之后保留所有内容。有什么想法吗?
答案 0 :(得分:0)
答案 1 :(得分:0)
您可以使用基于 regex 的替换功能在 Notepad2 中轻松完成此操作。
查找:^\([^|]*|[^|]*|\)
替换:\1Prefix
<强>详情:
^
- 一行的开头(Notepad2永远不会溢出行边界!)\([^|]*|[^|]*|\)
- 捕获与以下序列匹配的第1组:
[^|]*
- 除|
|
- 一个文字(是的,不需要转义,转义和未转义|
匹配文字|
)管道符号[^|]*|
- 见上文,转到第二个|
。注意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
访问。