C++ 正则表达式提取子字符串

Posted

技术标签:

【中文标题】C++ 正则表达式提取子字符串【英文标题】:C++ regex to extract substring 【发布时间】:2013-04-11 06:16:40 【问题描述】:

如何在 c++ 中提取 * 字符之前的所有字符的子字符串。例如,如果我有一个字符串

ASDG::DS"G*0asd345sdgfsdfg

我将如何提取部分

ASDG::DS"G

【问题讨论】:

【参考方案1】:

您当然不需要正则表达式。只需使用std::string::find('*')std::string::substr

#include <string>

int main()

    // raw strings require C++-11
    std::string s1 = R"(ASDG::DS"G*0asd345sdgfsdfg)";
    std::string s2 = s1.substr(0, s1.find('*'));

【讨论】:

【参考方案2】:

我认为您的文本没有多个*,因为find 返回第一个*

#include <iostream>
#include <string>

using namespace std;
#define SELECT_END_CHAR "*"

int main()

    string text = "ASDG::DS\"G*0asd345sdgfsdfg";
    unsigned end_index = text.find(SELECT_END_CHAR);
    string result = text.substr (0,end_index);
    cout << result << endl;
    system("pause");
    return 0;

【讨论】:

以上是关于C++ 正则表达式提取子字符串的主要内容,如果未能解决你的问题,请参考以下文章

Java使用正则表达式提取字段分隔的子字符串

如何使用正则表达式从 C++ 字符串中提取字符串

使用正则表达式在 C++ 中提取匹配的字符串

使用正则表达式从 mysql 列中提取子字符串

在普通bash中使用正则表达式提取子字符串

使用正则表达式从 Ruby 中的字符串中提取子字符串