我正在研究c ++ 11中的正则表达式,这个正则表达式搜索返回false.有谁知道我在做错了什么?.我知道.*除了换行符之外,它代表任意数量的字符.
所以我期待regex_match()返回true并将输出"找到".然而,输出结果是"未找到".
#include<regex>
#include<iostream>
using namespace std;
int main()
{
bool found = regex_match("<html>",regex("h.*l"));// works for "<.*>"
cout<<(found?"found":"not found");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
Wik*_*żew 11
你需要使用regex_search而不是regex_match:
bool found = regex_search("<html>",regex("h.*l"));
Run Code Online (Sandbox Code Playgroud)
请参阅IDEONE演示
简单来说,regex_search将在给定字符串中的任何位置搜索子字符串.regex_match只有在整个输入字符串匹配时才会返回true (与matchesJava中的行为相同).
该regex_match文档说:
返回目标序列是否与正则表达式匹配
rgx.
整个目标序列必须与此函数的正则表达式匹配>才能返回true(即,在>匹配之前或之后没有任何其他字符).对于当匹配仅是>序列的一部分时返回true的函数,请参阅regex_search.
该regex_search是不同的:
返回目标序列(主题)中的某个子序列是否与正则表达式
rgx(模式)匹配.
| 归档时间: |
|
| 查看次数: |
1114 次 |
| 最近记录: |