[英]regular expression match dates in strings containing: special characters, digits, letters
我有以下正则表达式来提取日期模式:
^\\d{1,2}[-/. ]\\d{1,2}[-/. ]\\d{1,4}$
此正则表达式匹配以下日期: 11/10 / 2004、19 / 20/1999等。但是它与我有特殊字符的模式不匹配: aa(11/10/2004);、
我如何修改它以匹配日期,即使它包含其他“字母,字符数字”
我删除了锚点部件,但仍然无法匹配日期。 不匹配:26/11/2004),25/10/2003),
C ++:
#include <boost/regex.hpp>
#include <iostream>
using namespace std;
int main()
{
string d = "25/10/2003),";
const boost::regex e("\\d{1,2}[-/. ]\d{1,2}[-/. ]\\d{1,4}");
bool x = boost::regex_match(d,e);
if(x)
{
cout <<"found date" << endl;
}
return 0;
}
您使用的是错误的功能。 regex_match
用于确定给定的正则表达式是否完全匹配字符串。 您想要的是regex_search
,它可以在字符串中的任意位置搜索匹配的序列。
以下代码对我有用。
regex regExDate("\\d{4}-\\d{2}-\\d{2}");
string date = "abc:\\2016-09-12";
smatch match;
if (regex_search(date, match, regExDate))
{
string strDate = match.str();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.