17

Douglas Crockfords Javascript: The Good Partsを読んでいます。正規表現の章を読み終わったところです。この章では、彼は JavaScript の\b、正の先読み(?=)と負の先読みを(?!) 「良い部分ではない」と呼んでいます。

彼は良くない理由を説明して\bいます (これは\w単語の境界検出に使用され、\wUnicode 文字を使用する言語では失敗します)、それは私には非常に良い理由のように思えます。

残念ながら、肯定的および否定的な先読みが良くない理由は除外されており、私はそれを思い付くことができません. 正規表現をマスターすることで、先読みがもたらす力を実感できました (もちろん、先読みがもたらす問題についても説明しています) が、それを「良くない部分」と見なすものは何も思い浮かびません。

JavaScript (ポジティブ | ネガティブ) 先読みまたは (ポジティブ | ネガティブ) 先読みが一般的に「良くない」と見なされるべき理由を説明できる人はいますか?

この質問をしたのは私だけではないようです: one and two

4

3 に答える 3

3

私が思いつく唯一の理由は、それらが一般的な正規表現エンジンの約半分でしかサポートされていないことかもしれませんが、普遍的にサポートされている構文に限定すると、できないことがたくさんあります.

ちなみに、(positive|negative)(lookahead|lookbehind) は、さまざまな実装間で機能のサポートを比較するこのページのように、まとめて「ルックアラウンド」と呼ばれることがあります。

http://www.regular-expressions.info/refflavors.html

于 2009-12-03T22:54:04.907 に答える
2

彼らは彼にとって難しすぎるのですか?

または:先読みと後読み(後者はJavaScriptではサポートされていません)により、正規表現時間が大幅に増加します。しかし、通常、JavaScriptの大量のデータを再確認することはありません。だから彼らは素晴らしいです。便利なときに使用してください。

于 2009-12-03T22:34:25.287 に答える