なぜそれは直感に反するのですか?
/(?<!\d)\d{8}(?!\d)/
、ここ(?<!\d)
が最初に来ますが、 lookbehindと呼ばれ、(?!\d)
次に、lookaheadと呼ばれます。すべてが直感に反しています。
このように名前を付ける理由は何ですか?
なぜそれは直感に反するのですか?
/(?<!\d)\d{8}(?!\d)/
、ここ(?<!\d)
が最初に来ますが、 lookbehindと呼ばれ、(?!\d)
次に、lookaheadと呼ばれます。すべてが直感に反しています。
このように名前を付ける理由は何ですか?
それらは、その特定の表現でたまたまどのように使用するかではなく、その機能に基づいて名前が付けられています。
後読みは、現在の位置の後ろ (左側) の文字列で一致を探します。
先読みは、現在の位置の前 (右側) の文字列で一致を探します。
正規表現エンジンは最初から最後まで文字を消費するためです。したがって、「前」は文字列の終わりに向かっており、「後ろ」は最初に向かっています。
...xyz12345678abc...
behind --->---------- ahead
は、の(?!\d)
後に来る 10 進数があるというアサーションである\d{8}
ため、正規表現エンジンは文字列の末尾方向、つまりlook-aheadの方向の文字をチェックする必要があります。
後読みについても同様です。
時間が前から後ろに進むのか、後ろから前に進むのかについてコンセンサスがなく、単に考え方が異なるだけなので、直感に反します。
英語では「Leave the past behind」と言いますが、「過去」は「前」に起こることです(フォア=フロント)。
それは本当に簡単です。
ab
次に、文字を左から右に読みます。
a
遅れていb
ます。
b
先ですa
そうは言っても、この種の相対主義が混乱を招く可能性があるというあなたの意見は正しいです。たとえば、アイマラン文化では、未来は遅れています。過去は先です。