在C 中带有REGEX的FIND()
find() with regex in C++
我正在尝试使用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
?
为什么这是一个问题?无论如何,我认为这是不可能的。
相关文章:
- std::map<struct,struct>::find 找不到匹配项,但是如果我循环通过 begin() 到 end(),我在那里看到匹配项
- OpenMP卸载说'fatal error: could not find accel/nvptx-none/mkoffload'
- 此模式的C++RegEx
- 使用.find函数在c++中查找字符和另一个字符之间的大小
- 在 QVector<std::unique_ptr 上使用 std::find<Type>>
- 错误"Could not find Boost"(缺少:上下文标头)
- /usr/bin/ld: cannot find -lc++
- std::find,返回所有找到的值的替代方法,而不仅仅是存在重复的向量的第一个值
- 使用 find 解析文件会给出不同文件的奇怪结果
- C++ std::regex 使用前瞻失败
- 在 ifcondition al中 find() C++ STL 中的 == a.end() 有什么用?
- Cannot find -lglad
- "Cannot find -l<directory>"错误 - CMake
- std::regex:匹配由数字和空格组成的字符串,并提取数字.如何?
- 为什么在向量上使用 std::find() 时会出现错误?
- 为什么映射插入和 map.find() 的单次迭代比插入和 map.find() 的两次单独迭代慢得多
- C++ find() 在存储为变量时返回不同的值
- set::find 查找不存在的元素
- 使用 std::find 时没有匹配的函数调用错误
- 在C 中带有REGEX的FIND()