我遇到了正则表达式的问题。例如,在以下代码中,if语句返回false:
string test("ABC123");
regex e("123");
if(regex_match (test.begin(), test.end(), e))
{
//do something
}
我能将正则表达式返回true的唯一方法是将正则表达式设置为"ABC123"
或".+"
。其他可能的正则表达式(例如"[0-9]"
或"[A-Z]"
也会返回false。
答案 0 :(得分:5)
不,请参阅this explanation:
整个目标序列必须与此正则表达式匹配 函数返回true(即没有任何附加字符 在比赛之前或之后)。对于一个在返回时返回true的函数 match只是序列的一部分,请参阅regex_search。
改为使用regex_search
。
这会返回true
:
string test("ABC123");
regex e("123");
if(regex_search (test.begin(), test.end(), e))
{
return true;
}
答案 1 :(得分:1)
你应该使用
regex_search(test.begin(), test.end(), e))
代替
只有当被测试的整个字符串与正则表达式匹配时,regex_match才会返回true。如果字符串中的子字符串与。
匹配,则regex_search将返回true请查看此链接以获取更多信息: