小编Jel*_*ani的帖子

C++中的正则表达式语句没有按预期工作

以下正则表达式语句在使用perl时匹配,但在使用c ++时不匹配.在cplusplus.com上阅读"std :: regex"类信息后,我可能不得不使用regex_search.除非,我使用regex_match中的标志.使用regex_search似乎使我想要执行的简单匹配变得复杂.我希望在1行上的匹配类似于perl.还有另一种在c ++中执行正则表达式匹配的方法吗?

C++

std::string line1 = "interface GigabitEthernet0/0/0/3.50 l2transport";
if (std::regex_match(line1, std::regex("/^(?=.*\binterface\b)(?=.*\bl2transport\b)(?!.*\.100)(?!.*\.200)(?!.*\.300)(?!.*\.400).*$/")))
cout << line1;
Run Code Online (Sandbox Code Playgroud)

perl的

my $line1 = "interface GigabitEthernet0/0/0/3.50 l2transport";
if ($line1 =~ /^(?=.*\binterface\b)(?=.*\bl2transport\b)(?!.*\.100)(?!.*\.200)(?!.*\.300)(?!.*\.400).*$/ )
    print $line1;
Run Code Online (Sandbox Code Playgroud)

我可以创建一个方法并传递搜索条件以返回true或false ....

(注意:我想使用C++的原因是因为它更快)解释与编译

(更新2017-05-16:在这个例子中,C++并不比Perl快.脚本的速度只取决于你用两种语言排列代码的方式.在我的例子中,Perl在这种情况下实际上比C++更快.两种语言都使用了正则表达式和相同类型的布局.即使我使用了boost库,C++也显得非常慢.)

c++ regex

4
推荐指数
1
解决办法
505
查看次数

标签 统计

c++ ×1

regex ×1