私はこの奇妙な std:wregex の動作にこだわっています:
^(?:(?:[^\\u0000-\\u001f<>:\\\\\"/\\\\\\|\\?\\*]*\\w+[^\\u0000-\\u001f<>:\\\\\"/\\\\\\|\\?\\*]*:/)|(?:\\./))(?:(?:[^\\u0000-\\u001f<>:\\\\\"/\\\\\\|\\?\\*]*\\w+[^\\u0000-\\u001f<>:\\\\\"/\\\\\\|\\?\\*]*/?)|(?:\\./)|(?:\\.\\./))*$
で例外を発生させます
e.code() == regex_constants::error_brack
奇妙なことに、オンラインの ECMAScript 正規表現バリデーターで問題なくテストしてきました。さらに、次のように最初のブラケットのペアを削除するという事実があります。
^(?:(?:\\w+[^\\u0000-\\u001f<>:\\\\\"/\\\\\\|\\?\\*]*:/)|(?:\\./))(?:(?:[^\\u0000-\\u001f<>:\\\\\"/\\\\\\|\\?\\*]*\\w+[^\\u0000-\\u001f<>:\\\\\"/\\\\\\|\\?\\*]*/?)|(?:\\./)|(?:\\.\\./))*$
ブラケットの不一致を特に考慮せずに、実際に問題を解決します。
そのような行動について説明できる人はいますか?
編集:
L"[^\u0000-\u001f]" でも動かないようです。
編集:
コンパイルと実行でサンプルを実行していますが、GCC が使用されていることに気づきませんでした。さらに、MVSC は、GCC が実行時エラー (例外) を表示しているときに発生するようです。