:\-6ren">
gpt4 book ai didi

c++ - 奇怪的 std::wregex 行为

转载 作者:太空宇宙 更新时间:2023-11-04 11:51:29 26 4
gpt4 key购买 nike

我一直坚持这种奇怪的 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。再加上当 GCC 给我一个运行时错误(异常)时,MVSC 似乎是。

最佳答案

我知道这个帖子真的很老,但是有人可能会从答案中受益。

问题是正则表达式字符串 \u0000 中的 null,编译器会将其解释为字符串的结尾。

正则表达式字符串应声明为原始字符串,例如 R"(some regex string)"。这将解决正则表达式中的任何 null 问题。

关于c++ - 奇怪的 std::wregex 行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18032006/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com