加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式和sscanf测试记录

发布时间:2020-12-14 01:43:15 所属栏目:百科 来源:网络整理
导读:正则表达式和sscanf在解析网址方面很方便 //#include Windows.h#include "stdafx.h"#include iostreamusing namespace std;void main(){/*这个结果应该是获取/到@之间的字符吧第一个^/表示非/的字符 而*是忽略符 就是忽略在/之前的非/字符对吧 但是到了/以后

正则表达式和sscanf在解析网址方面很方便

//#include <Windows.h>
#include "stdafx.h"
#include <iostream>
using namespace std;

void main()
{
	/*
	这个结果应该是获取/到@之间的字符吧
	第一个^/表示非/的字符 而*是忽略符 就是忽略在/之前的非/字符对吧 
	但是到了/以后 这个斜杠自身还没有被忽略掉 所以还要再忽略掉/自身 于是便将/加在了后面
	这个语句其实分成%*[^/]/和%[^@]两个部分 这样应该明白了吧?
	或者说括号外的/就是代表字符串中的/ 用来顶替它的位置的。
	*/
	char buf[100];
	memset(buf,100);
	sscanf("iios/12DDWDFF@122","%*[^/]/%[^@]",buf);//结果12DDWDFF
	printf("buf1=%sn",buf);
	memset(buf,"%[^/]",buf);//结果iios
	printf("buf2=%sn","%[^@]",buf);//结果iios/12DDWDFF,^@则相当于变为''
	printf("buf3=%sn","%*[^/]/%s",buf);//结果12DDWDFF@122
	printf("buf4=%sn",buf);

	char protocol[10];
	char ip[30];
	int port=0;
	char chn[10]={''};
	char filename[30]={''};
	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()的对应实例,然后利用标记好的部分进行替换,
是把第一和第二个参数交换位置。
*/

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读