如何在 Notepad++ 正则表达式中使用九个以上的反向引用?
How do I use more than nine backreferences in Notepad++ regexp?
如果我在Notepad++中使用长正则表达式,即:
^([^ ]+) ([^ ]+) ([^ ]+) (\[.*?\]) (".*?") (".*?") (".*?") (".*?") (\d+) (\d+) (\d+)$
(这是为了将 Apache 日志行从 space 分隔为制表符分隔)
然后我无法成功使用超过九个反向引用进行替换,因为 </code> 生成第一个捕获组的内容加上文字“0”。</p>
<p>我尝试使用 <code>
,但结果相同。
你可以为此使用花括号:
作为参考,Notepad++ 使用 boost::regex
,您可以在此处找到其替换模式文档:Boost-Extended Format String Syntax。这种替换模式允许在替换模式中使用更复杂的表达式(如条件和常见的 Perl 占位符)。
只需使用大括号:
这将确保第 10 个捕获组被引用,而不是第 1 个组后跟零。
如果我在Notepad++中使用长正则表达式,即:
^([^ ]+) ([^ ]+) ([^ ]+) (\[.*?\]) (".*?") (".*?") (".*?") (".*?") (\d+) (\d+) (\d+)$
(这是为了将 Apache 日志行从 space 分隔为制表符分隔)
然后我无法成功使用超过九个反向引用进行替换,因为 </code> 生成第一个捕获组的内容加上文字“0”。</p>
<p>我尝试使用 <code>
,但结果相同。
你可以为此使用花括号:
作为参考,Notepad++ 使用 boost::regex
,您可以在此处找到其替换模式文档:Boost-Extended Format String Syntax。这种替换模式允许在替换模式中使用更复杂的表达式(如条件和常见的 Perl 占位符)。
只需使用大括号:
这将确保第 10 个捕获组被引用,而不是第 1 个组后跟零。