バックトラッキングは、正規表現のバックリファレンスとどのように異なりますか?
バックリファレンスは、バックトラックでどのように制限を勝ち取りますか、またはその逆ですか?
1 に答える
4
バックトラッキングは、ステートマシンがバックアップし、正規表現の他の一致を再試行する方法です。これは、正規表現エンジンの内部にあるものです。
たとえば、正規表現と一致させようとしているとします。[a-z]*a任意の数の小文字の後に。が続きaます。
入力が与えられるとabca、貪欲な一致はそのすべてを正規表現の部分に割り当てますが[a-z]、最後のを一致させる方法はありませんa。aバックトラッキングを使用すると、エンジンはそのファイナルを入力ストリームに戻し、再試行しabcて、その[a-z]部分とaその部分に割り当てることでバックアップできますa。
一方、逆参照は、正規表現エンジンのユーザーが以前にキャプチャされたグループを参照するための手段です。例えば、
s/^([a-z])([a-z])/\1_\2/
\_____/\_____/
| |
| +- capture group 2
+-------- capture group 1
_各行の先頭にある2つの連続する小文字の間に挿入するコマンドの場合があります。\N後方参照(ここで、Nは数値を表します)は、内でキャプチャされたグループを参照します()。
于 2013-01-19T10:34:56.887 に答える