Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.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
Regex 为什么perl使用\g1作为反向引用,而其他人使用\1?_Regex_Perl - Fatal编程技术网

Regex 为什么perl使用\g1作为反向引用,而其他人使用\1?

Regex 为什么perl使用\g1作为反向引用,而其他人使用\1?,regex,perl,Regex,Perl,我很好奇Perl regex反向引用和其他所有人(C++、grep、emacs,我见过的所有其他用法)之间语法差异的历史原因 Perl使用\g1作为组反向引用。其他人使用的语法似乎更简洁,只是\1实际上,Perl确实接受\1 /^(.)\1\z/s#等效于长度($#)==2&&substr($#,0,1)eq substr($#,1,1) \g是一种更为新颖、更为灵活的添加 \1#引用第n次捕获捕获的文本 \g{1}\g1#引用第n次捕获捕获的文本 \g{-1}\g-1#引用由第n个捕获在\g

我很好奇Perl regex反向引用和其他所有人(C++、grep、emacs,我见过的所有其他用法)之间语法差异的历史原因


Perl使用
\g1
作为组反向引用。其他人使用的语法似乎更简洁,只是
\1

实际上,Perl确实接受
\1

/^(.)\1\z/s#等效于长度($#)==2&&substr($#,0,1)eq substr($#,1,1)
\g
是一种更为新颖、更为灵活的添加

\1#引用第n次捕获捕获的文本
\g{1}\g1#引用第n次捕获捕获的文本
\g{-1}\g-1#引用由第n个捕获在\g之前捕获的文本
\g{name}#引用(?…)捕获的文本

我认为它是相对的,像
\g{-1}
\g{name}
这样的命名反向引用比较容易混淆。如果您只是使用了
\{-1}
\{name}
这会更让人困惑吗?@Jerry Jeremiah,
\{
已经有了意义,所以这是不可能的。转义序列必须匹配
/^\\\\\w/
您“我很好奇Perl正则表达式反引用和其他所有人的反引用之间语法差异的历史原因”,如果有分歧,你必须问他们,因为大多数正则表达式语言都是基于Perl的:DFirst,它不是“其他所有人”——例如,and)。无论如何,他们(“其他所有人”)大多从Perl中获取特性,或者实际上是所有正则表达式,有些现在只是有点落后。大多数都有
\k{name}
,因为他们支持按名称捕获,所以必须这样做。这不应该结束。这个问题有一个客观的答案。