gpt4 book ai didi

c++ - 正则表达式 C++ : extract substring

转载 作者:IT老高 更新时间:2023-10-28 22:00:25 26 4
gpt4 key购买 nike

我想提取另外两个之间的子字符串。
例如:/home/toto/FILE_mysymbol_EVENT.DAT
或者只是 FILE_othersymbol_EVENT.DAT
我想得到: mysymbolothersymbol

我不想使用 boost 或其他库。只是来自 C++ 的标准东西,除了 CERN 的 ROOT 库,带有 TRegexp ,但是我不知道怎么用……

最佳答案

自去年以来,C++ 已经在标准中内置了正则表达式。这个程序将展示如何使用它们来提取你想要的字符串:

#include <regex>
#include <iostream>

int main()
{
const std::string s = "/home/toto/FILE_mysymbol_EVENT.DAT";
std::regex rgx(".*FILE_(\\w+)_EVENT\\.DAT.*");
std::smatch match;

if (std::regex_search(s.begin(), s.end(), match, rgx))
std::cout << "match: " << match[1] << '\n';
}

它会输出:

match: mysymbol

需要注意的是,它不能在 GCC 中工作,因为它的库对正则表达式的支持不是很好。在 VS2010(可能还有 VS2012)中运行良好,并且应该在 clang 中运行。


到现在(2016 年末),所有现代 C++ 编译器及其标准库都完全符合 C++11 标准,即使不是全部也是 C++14 标准。 GCC 6 和即将推出的 Clang 4 也支持大部分即将推出的 C++17 标准。

关于c++ - 正则表达式 C++ : extract substring,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11627440/

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