正则表达式和sscanf测试记录
2014-07-02 14:08
183 查看
正则表达式和sscanf在解析网址方面很方便
//#include <Windows.h> #include "stdafx.h" #include <iostream> using namespace std; void main() { /* 这个结果应该是获取/到@之间的字符吧 第一个^/表示非/的字符 而*是忽略符 就是忽略在/之前的非/字符对吧 但是到了/以后 这个斜杠自身还没有被忽略掉 所以还要再忽略掉/自身 于是便将/加在了后面 这个语句其实分成%*[^/]/和%[^@]两个部分 这样应该明白了吧? 或者说括号外的/就是代表字符串中的/ 用来顶替它的位置的。 */ char buf[100]; memset(buf,0,100); sscanf("iios/12DDWDFF@122", "%*[^/]/%[^@]", buf);//结果12DDWDFF printf("buf1=%s\n",buf); memset(buf,0,100); sscanf("iios/12DDWDFF@122", "%[^/]", buf);//结果iios printf("buf2=%s\n",buf); memset(buf,0,100); sscanf("iios/12DDWDFF@122", "%[^@]", buf);//结果iios/12DDWDFF,^@则相当于变为'\0' printf("buf3=%s\n",buf); memset(buf,0,100); sscanf("iios/12DDWDFF@122", "%*[^/]/%s", buf);//结果12DDWDFF@122 printf("buf4=%s\n",buf); char protocol[10]; char ip[30]; int port=0; char chn[10]={'\0'}; char filename[30]={'\0'}; char* url="http://192.168.1.253:80/web/index.html"; sscanf(url,"%[^:]://%[^:]:%d/%[^/]/%s",protocol,ip,&port,chn,filename); cout << protocol << " " << ip << " " << port << " " << chn << " " << filename << endl; system("pause"); return; } /* foo(\([^,]*\),这一段可以简单的翻译为“当你找到foo(就把其后直到第一个逗号之前的部分标记为\1”。 然后我们使用同样的办法标记第二个参数为\2。对第三个参数的标记方法也是一样,只是我们要搜索所有的 字符直到右括号。我们并没有必要去搜索第三个参数,因为我们不需要调整它的位置,但是这样的模式能够 保证我们只去替换那些有三个参数的foo()方法调用,在foo()是一个重载(overloading)方法时这种明确的 模式往往是比较保险的。然后,在替换部分,我们找到foo()的对应实例,然后利用标记好的部分进行替换, 是把第一和第二个参数交换位置。 */
相关文章推荐
- Javascript 正则表达式测试页面
- Javascript正则表达式测试网页
- sscanf()和正则表达式的结合
- 转贴(佚名):Javascript正则表达式测试网页
- 发布一个.NET正则表达式测试站点
- 转贴(佚名):Javascript正则表达式测试网页
- 一个测试Javascript正则表达式的在线工具
- 剪切板与正则表达式测试
- Javascript正则表达式测试网页
- JavaScript (js) 正则表达式 测试器
- Javascript正则表达式测试网页
- 由于自己开发的项目需要正则表达式,这里记录一下,以便查阅
- sas9正则表达式测试(对字符串进行字符替换)
- 正则表达式在线测试
- 正则表达式构造与测试小工具(上)
- vbscript正则表达式测试方法
- 测试正则表达式(转帖)
- sscanf 的正则表达式用法
- 正则表达式测试器0.4(Boost Regex Tester 0.4) (最新版本)
- 对正则表达式不熟悉,记录几个从别处拿来验证过的表达式,日期、数字、email、网址验证