一些正则表达式的使用

---------------------------------------------------------------------------------------------
  |读取文件时,一行一行读取,截取一段一段字符做法|用到正则表达式|
---------------------------------------------------------------------------------------------
//把源字符串"123456"拷贝到str的前6个字符,并且把str的第7个字符设为null字符,也就是/0
sscanf( "123456" , "%s" , str) ; ---------str的值为 "123456/0!!!"
---------------------------------------------------------------------------------------------
//sscanf只拷贝3个字符给str,然后把第4个字符设为null字符。
sscanf( "123456" , "%3s" , str) ; ---------str的值为 "123/0!!!!!!"
---------------------------------------------------------------------------------------------
//这个是过滤%* ,但好像只能过滤空格键即是\0;
char buf[1024];
char dataone[1024];
sscanf(buf,"%*s%s",dataone);
---------------------------------------------------------------------------------------------
//括号里面的a-z就是一个正则表达式,它可以表示从a到z的任意字符获取保存到str
sscanf( "aaaAAA" , "%[a-z]" , str) ; ---------str的值为 "aaa/0!!!!!!"
---------------------------------------------------------------------------------------------
//注意:符号^表示逻辑非。就是不是小写就拷贝,后面还在大写没拷贝只要因为当扫描到没有大写时结束
sscanf( "AAAaaaBBB" , "%[^a-z]" , str) ; ---------str的值为 "AAA/0!!!!!!"
---------------------------------------------------------------------------------------------
%*表示过滤 满足条件的字符,%*[A-Z]过滤了所有大写字母,同时%号不能出现两次以上
scanf( "AAAaaaBBB" , "%*[A-Z]%[a-z]" , str) ; ---------str的值为 "aaa/0!!!!!!"
---------------------------------------------------------------------------------------------
注意1:%只能使用一次,但%*可以使用多次,比如在这个实验里面,先用%*[A-Z]过滤大写字母,然后用%*[a-z]过滤小写字母。


注意2:^后面可以带多个条件,且这些条件都受^的作用,比如^a-z=表示^a-z且^=(既不是小写字母,也不是等于号)。
sscanf( "AAAaaaBC=" , "%*[A-Z]%*[a-z]%[^a-z=]" , str) ; ---------str的值为 "BC/0!!!!!!!"
---------------------------------------------------------------------------------------------
sscanf("iios/adfadfad@dddd","%*[^/]/%[^@]",buff); 成功!
%[]: 取指定字符集
%[^/]: 取到指定字符’/’为止的字符集
%*[^/]: 将取到指定字符’/’为止的字符集忽略
---------------------------------------------------------------------------------------------
strtok_s(在Windows) |strtok()用法|
---------------------------------------------------------------------------------------------
int in=0;
char buffer[]="Fred,John,Ann"
char *p[3];
char *buff = buffer;
while((p[in]=strtok(buf,","))!=NULL) {
i++;
buf=NULL; }


---------------------------------------------------------------------------------------------
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值