问题描述
我很好奇 Perl 正则表达式反向引用和其他所有人(C++、grep、emacs,几乎所有我见过的其他用法)之间的语法差异的历史原因。
Perl 使用 \g1
作为组反向引用。其他人都使用看起来更简洁的语法,只是 \1
。
解决方法
实际上,Perl 确实接受 \1
。
/^(.)\1\z/s # Equiv* to length($_) == 2 && substr($_,1) eq substr($_,1,1)
\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>...)