0

Oracle 11g R2 Express Edition (XE) でこの SQL コマンドが予期した結果を返さない理由を知っていますか?

SELECT 'X'
FROM dual
WHERE REGEXP_LIKE('Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)', '^.*MSIE [5-8](?:\.[0-9]+)?(?!.*Trident\/(?:[5-9]|1[0-9])\.0).*$');

サイトhttps://regex101.com/を使用すると、パターンが一致します...

4

1 に答える 1

0

スラッシュの後に 5 から 9 までの数字のみを期待するパターンで "...Trident/4.0 ..." を検索するため、regexe101 がどのように一致するのか疑問に思っています (これには 4 が含まれていないため、 regex101 は一致しないはずです!)。

とにかく、これを修正して ?: と ?! を削除した後 明らかに 11gR2 (および 12c) で正しく処理されない修飾子は、次のように機能します。

SELECT 'X'
FROM dual
WHERE REGEXP_LIKE(
    'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)'
  , '^.*MSIE [5-8](?:\.[0-9]+)?(.*Trident\/([4-9]|1[0-9])\.0).*$');
于 2016-04-29T14:03:20.043 に答える