如何将正则表达式的向量与一个字符串匹配?

问题描述 投票:0回答:2

如果我要验证一个字符串与字符串向量中的任何一个完全匹配,那么我将使用

std::find(vectOfStrings.begin(), vectOfStrings.end(), "<targetString>") != v.end()

如果目标字符串与向量中的任何字符串匹配,则它将返回true。

但是如果我要检查一个字符串是否与任何正则表达式向量匹配怎么办?我可以使用任何标准库来使它像std::find(vectOfRegExprsns.begin(), vectOfRegExprsns.end(), "<targetString>") != v.end()

任何建议将不胜感激。

c++ regex c++11 vector stl
2个回答
1
投票

如何将std::find_if()lambda一起使用?

std::find_if(
vectOfRegExprsns.begin(), vectOfRegExprsns.end(),
[](const std::string& item) { return regex_match(item, std::regex(targetString))});

0
投票

您可以通过使用交替运算符编写一个正则表达式来实现所需的功能,从而覆盖所需的所有模式。您可以简单地使用std :: regex_match。

但是您需要注意交替的顺序,请查看此答案以获取更多信息:https://stackoverflow.com/a/23536282/11420760

a = "P1 | P2 | P3"
regex_match(a, b)
© www.soinside.com 2019 - 2024. All rights reserved.