1

Jim Hollenhorst のThe 30 Minute Regex Tutorial
で正規表現を学んでいて、彼のソフトウェア (Expresso) で言及されているこれら 2 つの正規表現を確認したところ(?=)、テキスト文字列のすべての位置に null 文字が一致し、(?!)常に失敗し
、私自身、null charと空の一致を理解するのは非常に困難です.何かをキャッチしたと感じましたが、同時にそれは無形に見えました.

だから、誰かが私のために「ヌル」マッチ(それがどのように機能するか、およびいくつかの同様の使用法または正規表現)を説明できることを願っています。

ありがとう。

4

2 に答える 2

4

(?=foo) matches any position that's followed by foo, and (?!foo) matches any position that's not followed by foo. So, since every position is followed by the empty string — there's an empty substring between any two characters, and there's an empty substring at the start and end of any string — (?=) matches any position at all, and (?!) doesn't match any position at all.

于 2013-09-07T06:09:14.380 に答える
3

(?=) and (?!) are degenerate cases of a positive look ahead (?=regex) and negative look ahead (?!regex) respectively.

(?=) means the next part of the input matches the zero-width string (the point between adjacent characters or the last character and the end of input), which is always true.

(?!) means the next part of the input must not match the zero-width string, which is always false - there's always a nothing following every character.

于 2013-09-07T06:10:58.957 に答える