在C 中带有REGEX的FIND()

find() with regex in C++

本文关键字:FIND REGEX      更新时间:2023-10-16

我正在尝试使用C 解析文本文件,并检查是否存在特定的PATTERN

PATTERN;<n_WhiteSpaces><MACRO>组成。在我的代码中,这些宏已经在C 向量中定义了,我们正在使用迭代器来检查其中任何一个。

vector<string> macroList;
vector<string>::const_iterator iter;
macroList.push_back("MACRO1");
macroList.push_back("MACRO2");
macroList.push_back("MACRO3");
string Line;
getline( *FilePtr, Line );
for( iter = macroList.begin(); iter != macroList.end(); iter++ )
{
  currentpos = Line.find( ;<n_WhiteSpaces>*iter );
}

现在,我很确定find( ;<n_WhiteSpaces>*iter )在句法上是错误的。作为我实际需要做的事情的参考,我正在提供此事。我的代码应返回;的位置,然后是n白色空间(也可能是0),然后是macroList vector中的任何宏。

无论如何,是否有可能避免串联两个字符串;<n_WhiteSpaces>&amp;*iter?请帮助我使用regex

新手到C 。抱歉,如果我的问题听起来很傻!:p

正如@galik指出的那样,您需要使用regex_search函数,这是一个简单的代码,可以帮助您了解如何使用它。

for( iter = macroList.begin(); iter != macroList.end(); iter++ )
{
    std::regex reg(";[\s0]+" + *iter);
    std::smatch m;
    if (std::regex_search (yourLine, m, reg)) {
        currentPos = m.position();
        break;
    }
}

无论如何,是否有可能避免串联两个字符串;<n_WhiteSpaces>&amp;*iter

为什么这是一个问题?无论如何,我认为这是不可能的。