C++ 正则表达式在字符串中匹配日期,包含:特殊字符、数字、字母
我使用以下正则表达式来提取日期模式:C++ 正则表达式在字符串中匹配日期,包含:特殊字符、数字、字母,c++,regex,C++,Regex,我使用以下正则表达式来提取日期模式: ^\d{1,2}[-/.]\d{1,2}[-/.]\d{1,4}$ 此正则表达式与以下日期匹配:2004年10月11日、1999年20月19日等。 但它与我有特殊角色的模式不匹配:aa(11/10/2004) 如何修改它以匹配日期,即使它包含其他“字母、字符和数字” 我移除了锚固件,但仍然无法匹配日期。 不匹配:26/11/2004),25/10/2003) C++: #包括 #包括 使用名称空间std; int main() { 字符串d=“25/
^\d{1,2}[-/.]\d{1,2}[-/.]\d{1,4}$
我移除了锚固件,但仍然无法匹配日期。 不匹配:26/11/2004),25/10/2003)
C++:
#包括
#包括
使用名称空间std;
int main()
{
字符串d=“25/10/2003),”;
常量boost::正则表达式e(“\\d{1,2}[-/.]\d{1,2}[-/.]\\d{1,4}”);
boolx=boost::regex_匹配(d,e);
if(x)
{
cout您只需删除将匹配锚定到字符串开头和结尾的字符^$
:
^.*\d{1,2}[-/.]\d{1,2}[-/.]\d{1,4}.*$
您只需删除将匹配锚定到字符串开头和结尾的字符^$
:
^.*\d{1,2}[-/.]\d{1,2}[-/.]\d{1,4}.*$
您使用了错误的函数。regex\u match
用于确定
给定的正则表达式是否与字符串完全匹配。
您需要的是regex\u search
,它搜索匹配的
在字符串中的任意位置排序。您使用了错误的函数。regex\u match
用于确定
给定的正则表达式是否与字符串完全匹配。
您需要的是regex\u 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();
}
下面的代码适合我
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();
}
在aa(11/10/2004);,
中,您想匹配整个字符串还是只匹配11/10/2004
部分?我想匹配11/10/2004
部分。为了更简单,我只想知道aa(11/10/2004)中的字符串是否包含日期模式;,
,是想匹配整个字符串还是只匹配11/10/2004
部分?我想匹配11/10/2004
部分。为了更简单,我只想知道字符串是否包含日期pattern@sshanhank我有一个问题,我会在我的问题中说明。是的,它起作用了。我在想它。所以*
表示任何字符都可以前后对吗?@HaniGoc,有点。*
将匹配除换行符以外的任何内容。为什么要简单(即regex\u search
)并使用为工作设计的工具,当您可能很复杂时,使用另一个工具来工作?(这听起来比我的意思要严厉得多;我也经常使用类似的方法,尤其是在尝试匹配多个子模式时。)@SShank我有个问题,我会在我的问题中说明。是的,它起作用了。我在想它。所以*
表示前后的任何字符,对吗?@HaniGoc,有点。*
将匹配除新行以外的任何字符。为什么简单(即正则表达式搜索
)当你可能很复杂的时候,使用为工作而设计的工具,并扭转另一个工具来工作?(这听起来比我的意思要严厉得多;我也经常使用类似的工具,尤其是在尝试匹配多个子模式时。)