|
レベルダウンといえばレベルダウンのような気もするんですが、もうちょっと
慎重に考えたら仕様ということになってしまうようです。
なぜかというと…
今回のケースは後方不一致指定は関係ないので、単純化するために、
(?<![0-90-9][.,])([0-90-9.]+)
という正規表現パターンだとします。
以前ヒットしていた"1.2"の文字列ですが、これは、解釈によっては、前方
不一致指定している
[0-90-9][.,]
の部分が"1."にヒットして、([0-90-9.]+)の部分が"2"にヒットした文
字列と解釈出来てしまいます。なので、そういう意味ではヒットしないのが正し
い、ということになってしまいます。
ということで仕様になってしまいます。
もともと、(?<!...)の中が可変長だといろんな解釈が発生してしまう可能性が
あって、その場合にヒットした扱いにするのかヒットしない扱いにするのか、ど
っちもありということになってしまうような気がします。
試しにEmEditorさんでテストしたら、そもそもEmEditorさんでは(?<!...)の中
では可変長の文字列が指定出来ない仕様になってました。
(無理矢理指定したら無視されるようで)
しいてこれを以前の仕様に戻すということになると、去年の6月にcolderさん
から連絡いただいた修正を取り消さないといけないです。
---------------------当時の話----------------------------
正規表現
"(?<!foo.*,)bar" …… (1)
"(?<!foo.*?,)bar" …… (2)
テストデータ
"foo,bar,baz" …… (a)
"foo,baz,bar" …… (b)
(1)の正規表現が(a)に、(2)の正規表現が(b)にマッチします。
---------------------当時の話おわり----------------------
難しいです。
とりあえず、去年の6月に直したのはそれはそれで必要な処置だと思うので、
現状仕様ってことで通させて欲しい所です。
|
|