gpt4 book ai didi

c++ - std::regex 是否支持 "(?i)"不区分大小写?

转载 作者:可可西里 更新时间:2023-11-01 15:45:25 26 4
gpt4 key购买 nike

我正在使用 Visual Studio 2010。这...

std::regex pattern("(?i).*a.*");

...抛出这个...

std::tr1::regex_error - 正则表达式错误

...而且我找不到任何说明 std::regex 是否支持 (?i) 不区分大小写的语法。

谁能确认/否认 std::regex 不支持将 (?i) 作为不区分大小写的前缀?

最佳答案

该标准仅要求符合 POSIX 正则表达式语法(不包括像这样的 Perl 扩展)和符合 ECMAScript 正则表达式规范(除了少数异常(exception),根据 ISO 14882-2011§28.13),描述如下在 ECMA-262,§15.10.2 中。 ECMAScript 的正则表达式语法包括以 (?) 语法形式使用修饰符,因此,推而广之,C++11/14 和执行 TR1 的大多数实现。

这并不排除您的标准库实现更多 PCRE 扩展,但标准并不需要它,因此根本无法保证。

所以,不,它本身不受支持。

但是,您可以按如下方式声明您的正则表达式:

std::regex pattern(".*a.*", std::regex_constants::icase);

这将声明您的模式不区分大小写。

关于c++ - std::regex 是否支持 "(?i)"不区分大小写?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24744819/

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