|
すみませんが、これの件は、やっぱり仕様とさせていたたくしか無いような気
がします。
基本的に「.*」というのは、もっとも長い物にヒットするというのが正しい動
作となる訳ですが、「.*」を2つ並べた場合に、先に指定した方が長くヒットし
なければないなら、というルールは存在しないです。例えば
「(.*)a(.*)」
という正規表現パターンがあったとして、それが、
「aaa」
という文字列に対して、
\1相当 = ""
\2相当 = "aa"
\1相当 = "a"
\2相当 = "a"
\1相当 = "aa"
\2相当 = ""
のどれになるかの保証は無いし、実際、それを保証することが出来ないような
内部的なロジックになっています。
内部的なロジックがどうしてそうなってしまうかというと、つまり、例えば上
記のパターンの例でいうと、一度「aaa」に対してヒットするパターンが見つか
った場合には、もうその「aaa」に対してヒットするパターンはすべて除外する
ような処理をしています。それによって検索が高速化されるからです。
ということで、これは仕様とさせていただくしか無いです。
今回のケースで、例えば
ABC\DEF\GHI
の「GHI」の部分だけ抽出したいということでしたら、
.*\\(.*)
ではなくて、
.*\\([^\\]*)
のように書いていただく必要があります。
|
|