有关正则表达式的问题:将中文字符串中的日期提取出来
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了有关正则表达式的问题:将中文字符串中的日期提取出来相关的知识,希望对你有一定的参考价值。
程序如下:
int _tmain(int argc, _TCHAR* argv[])
//测试语料
const char *szStr = "小明于2004年9月10日高考完事";
if(1)
const char *szReg = "(\\d+年\\d+月\\d+日)";
regex reg( szReg );
//提取子串
cmatch mat;
bool r=regex_search( szStr, mat, reg);
assert(r);
if(r) //如果匹配成功
cout<<mat<<endl;
return 0;
输出结果:(我想要的是“2004年9月10日“)
我想请问:
程序中的cmatch mat;是什么类型变量?mat在regex_search( szStr, mat, reg)中又有着怎样的作用?如果mat内容是字符串中符合正则表达式规则的子串,为什么结果有不对呢?
我需要用c++来编程,所以可能需要考虑字符编码的问题,我想问的是vs编程中怎么处理中文字符串的问题
为啥我可以
不加L的话,保存的是本地编码:简体中文系统上保存的就是GBK,繁体中文上保存的就是Big5,日语系统上保存的就是ShiftJIS。
加L的话,字符串类型变成wchar_t*,保存的是UTF16(还是UCS2我不知道……前者似乎是支持可变长的,不过我没见过它保存成可变长的过),所有系统上都是一样的编码。
参考技术A 追问你们用的什么环境啊,我用的是VS2008
追答我用的是正则表达式测试工具,其环境完全兼容vs.net
参考技术B 你QQ多少啊以上是关于有关正则表达式的问题:将中文字符串中的日期提取出来的主要内容,如果未能解决你的问题,请参考以下文章
js使用正则表达式将字符串里面的img标签src的值提取出来
ultraedit/UE/Ultra Studio里面, 如何将正则表达式匹配到的所有字符串结果(不是所在行)提取出来?