gpt4 book ai didi

javascript - 为什么 C++ 正则表达式只能找到 javascript 正则表达式在字符串中找到的一部分?

转载 作者:太空狗 更新时间:2023-10-29 21:43:38 25 4
gpt4 key购买 nike

我需要在我的代码中使用正则表达式,但它无法正常工作。我想在我逐行读取的文件中搜索 Test.list.everything,但它只会获取 everything。我缩短了我的代码以明确我的问题。在不同的正则表达式测试程序中,我的表达式可以正常工作,如您在此测试程序中所见:http://regex101.com/r/iR1cH1 .

我在那里使用的输入是

summer1969 2014-03-07 Test.list.everything.1234 123.4.4.34 moreCode

和正则表达式 (([a-zA-Z]+\.{0,1})+)\.[0-9]+

如果我使用 std::tr1::regex 而不是 std::regex,它也不能正常工作。我不知道这两个表达之间有什么区别吗?

C++ 和我使用的其他程序有什么区别?我怎样才能让 C++ 正则表达式表现得像其他正则表达式一样?

#include <regex>
#include <iostream>

int main()
{
std::string output = "summer1969 2014-03-07 Test.list.everything.1234 123.4.4.34 moreCode";
std::cmatch result;
std::regex rx ("(([a-zA-Z]+\\.{0,1})+)\\.[0-9]+");
std::regex_search(output.c_str(), result, rx);
for(int i = 0; i < result.size(); i++)
{
std::cout << i << ". " << result[i] << std::endl;
}
system("pause");
return(0);
}

输出:

0. everything.1234
1. everything
2. everything.

最佳答案

它看起来像是 Visual C++ 2010 中的错误。如果您想捕获后跟点和数字的文本,那么您可以使用以下正则表达式:

"[a-zA-Z\\.]+(?=\\.\\d+)"

它工作正常。

关于javascript - 为什么 C++ 正则表达式只能找到 javascript 正则表达式在字符串中找到的一部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22244721/

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