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

kdo*_*dog 0 regex perl

我很好奇 Perl 正则表达式反向引用和其他人的(C++、grep、emacs,实际上我见过的所有其他用法)之间的语法差异的历史原因。

Perl\g1用于组反向引用。其他人都使用看起来更简洁的语法,只是\1.

ike*_*ami 11

实际上,Perl 确实接受\1.

/^(.)\1\z/s    # Equiv* to length($_) == 2 && substr($_, 0, 1) eq substr($_, 1, 1)
Run Code Online (Sandbox Code Playgroud)

\g 是一个更新得多且灵活得多的补充。

\1             # References the text captured by the nth capture
\g{1}   \g1    # References the text captured by the nth capture
\g{-1}  \g-1   # References the text captured by the nth capture before the \g
\g{name}       # References the text captured by (?<name>...)
Run Code Online (Sandbox Code Playgroud)