Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在记事本++;regexp?_Regex_Notepad++_Backreference_Capturing Group - Fatal编程技术网

如何在记事本++;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中,您可以简单地使用回调函数进行替换,因此问题不存在。感谢提供额外的文档!