我有一个字符串说:
std::string s1 = "@Hello$World@";
我希望将它与另一个字符串匹配,但仅限于某些字符:
std::string s2 = "_Hello_World_";
字符串必须具有相同的长度并完全匹配,忽略_
个字符,这些字符可以是任何字符。换句话说,我想匹配" Hello"的序列。和"世界"在相同的指数。
我可以在这里使用一个循环忽略那些索引,但我想知道我是否可以使用正则表达式执行此操作?
答案 0 :(得分:1)
是的,你可以这样使用std::regex_match
:
std::string string("@Hello$World@");
std::regex regex("^.Hello.World.$");
std::cout << std::boolalpha << std::regex_match(string, regex);
正则表达式中的.
(点)表示&#34;任何字符&#34;,^
表示&#34;字符串的开头&#34; $
表示字符串的结尾。
答案 1 :(得分:1)
'。'正则表达式模式中的(点)运算符将作为任何char的替代。下面有3个字符串,其中包含与pat变量匹配的不同分隔符...
#include <iostream>
#include <regex>
using namespace std;
int main()
{
regex pat(".Hello.World.");
// regex pat(.Hello.World., regex_constants::icase); // for case insensitivity
string str1 = "_Hello_World_";
string str2 = "@Hello@World@";
string str3 = "aHellobWorldc";
bool match1 = regex_match(str1, pat);
bool match2 = regex_match(str2, pat);
bool match3 = regex_match(str3, pat);
cout << (match1 ? "Matched" : "Not matched") << endl;
cout << (match2 ? "Matched" : "Not matched") << endl;
cout << (match3 ? "Matched" : "Not matched") << endl;
//system("pause");
return 0;
}