gpt4 book ai didi

c++ - 此正则表达式在 C++ 中不起作用

转载 作者:行者123 更新时间:2023-11-30 01:47:51 25 4
gpt4 key购买 nike

它应该与 "abababab" 匹配,因为 "ab" 连续重复两次以上,但代码未打印任何输出。 在 C++ 中使用正则表达式还有其他技巧吗?

我尝试使用其他语言,它工作得很好。

#include<bits/stdc++.h>

int main(){

std::string s ("xaxababababaxax");
std::smatch m;
std::regex e ("(.+)\1\1+");

while (std::regex_search (s,m,e)) {
for (auto x:m) std::cout << x << " ";
std::cout << std::endl;
s = m.suffix().str();
}

return 0;
}

最佳答案

您的问题是您的反斜杠转义了字符串中的“1”。您需要通知 std::regex 将它们视为 '\' 。您可以通过使用原始字符串 R"((.+)\1\1+)"或通过转义斜杠来执行此操作,如下所示:

#include <regex>
#include <string>
#include <iostream>


int main(){

std::string s ("xaxababababaxax");
std::smatch m;
std::regex e ("(.+)\\1\\1+");

while (std::regex_search (s,m,e)) {
for (auto x:m) std::cout << x << " ";
std::cout << std::endl;
s = m.suffix().str();
}

return 0;
}

产生输出

abababab ab 

关于c++ - 此正则表达式在 C++ 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31098881/

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