繁体   English   中英

正则表达式匹配包含以下内容的字符串中的日期:特殊字符,数字,字母

[英]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;

}

您只需删除将匹配项锚定到字符串^$开头和结尾的字符:

^.*\\d{1,2}[-/. ]\\d{1,2}[-/. ]\\d{1,4}.*$

演示

您使用的是错误的功能。 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM