如何在记事本++;regexp?
如果我在记事本++中使用长正则表达式,即:如何在记事本++;regexp?,regex,notepad++,backreference,capturing-group,Regex,Notepad++,Backreference,Capturing Group,如果我在记事本++中使用长正则表达式,即: ^([^ ]+) ([^ ]+) ([^ ]+) (\[.*?\]) (".*?") (".*?") (".*?") (".*?") (\d+) (\d+) (\d+)$ (用于将Apache日志行从空格分隔转换为制表符分隔) 然后,我不能成功地使用九个以上的反向引用进行替换,因为\10会生成第一个捕获组的内容加上一个文本“0” 我尝试了10美元,但结果是一样的。你可以用大括号来表示: ${10} 作为参考,Notepad++使用了boost::r
^([^ ]+) ([^ ]+) ([^ ]+) (\[.*?\]) (".*?") (".*?") (".*?") (".*?") (\d+) (\d+) (\d+)$
(用于将Apache日志行从空格分隔转换为制表符分隔)
然后,我不能成功地使用九个以上的反向引用进行替换,因为\10
会生成第一个捕获组的内容加上一个文本“0”
我尝试了10美元,但结果是一样的。你可以用大括号来表示:
${10}
作为参考,Notepad++使用了
boost::regex
,您可以在这里找到它的替换模式文档:。此替换模式允许在替换模式中使用更复杂的表达式(如条件和常见Perl占位符)。只需使用大括号:
${10}
这将确保引用第10个捕获组,而不是后面跟零的第一个组。使用花括号:
${10}
这是否意味着我可以对javascript regexp使用相同的方法?@Rahul:No,JS“理解”$10
(这在消除回溯ID的歧义方面相当聪明)@Rahul JavaScript有自己的正则表达式规范,但在JS中,您可以简单地使用回调函数进行替换,因此问题不存在。感谢提供额外的文档!