トップ 差分 一覧 ソース 検索 ヘルプ PDF RSS ログイン

正規表現.pl

[Perl]
ここに書くことなのかどうなのか。

look-ahead
look-behind
backreference

なんだか、lookahead=前方参照、lookbehind=後方参照、backreference=後方参照、と訳されている。
明らかに誤訳だろ。

まず、lookbehindとbackreferenceはぜんぜん違う。
lookahead、lookbehindは、あるポイントの正規表現パターンが、自分の前後のパターンに「係っている」ということ。
自分自身の存在が、その前後のパターンのマッチ条件に組み入れられている、というか。

lookahead:
(pattern)(?=ahead)
aheadが存在している場合に限り、patternはマッチする。
(?=ahead)は自分の"ahead"にあるpatternをlookしている。。。なんのこっちゃ。

lookbehind:
(?<=behind)(pattern)
behindが存在している場合に限り、patternがマッチする。
(?<=behind)は自分の"behind"にあるpatternをlookしている。。。

backreference:
$nのように正規表現全体のマッチが行われた後、$nが参照される。参照するのはプログラマが参照する。
lookahead、lookbehindは正規表現パターンが、自分自身の前後に係るので、そういう性質をプログラマが利用するのであって、ぜんぜん違う。

backreferenceはマッチ後参照。
lookaheadは前のパターンに係る条件。
lookbehindは後のパターンに係る条件。

というわけで、ここでわけのわからない訳語を考えてみる。
条件は、漢語にすること。

backreference: 照合後参照
lookahead: 前係照合
lookbehind: 後係照合

意図通りわけが分からない造語ができた。
しかし、前方参照、後方参照の意味不明さとさして変わらないだろう。

オレオレ用語:
backreference: 後方参照
lookahead: ルックアヘッド
lookbehind: ルックビハインド
こうしておけば誤解がないだろう。