C语言sscanf()正则表达式注意及截取字符串 超简单

截取字符串

#include <stdio.h>
int main(int argc,char** argv)
{
	const char* in = "a1b2c3ABCdef 123";
	char out[100] = {0};

	sscanf(in,"%3s", out);
	printf("截取前3个字符:%s\n",out);

	sscanf(in,"%*3s%3s", out);
	printf("跳过3个字符后截取前3个字符:%s\n",out); 


	sscanf(in,"%*[^A]A%3s", out);
	printf("忽略开头到A字符串,截取前3个字符:%s\n",out);
	return 0;
}

%表示选择,%后面的是条件。

  比如"%s",s是一个条件,表示任意字符,"%s"的意思是:只要输入的东西是一个字符,就把它拷贝给str。

  比如"%3s"又多了一个条件:只拷贝3个字符。

  比如“%[a-z]”的条件稍微严格一些,输入的东西不但是字符,还得是一个小写字母的字符。

  []内是匹配的字符,^表示求反集,当遇到非集合内的字符时终止。贪婪算法,即算法可能多的匹配字符。

  注意:遇到非匹配项就结束。不处理非匹配项后面的内容。

%* 与%刚好相反,表示过滤满足条件的字符,也就是跳过满足条件的字符,其后一定要有新的%语句,否则无法读入。

注意:遇到非匹配项就结束。不处理非匹配项后面的内容。


 

https://www.cnblogs.com/orange1438/archive/2013/05/12/4544958.html 这文章完全错误。

发布了331 篇原创文章 · 获赞 140 · 访问量 71万+

猜你喜欢

转载自blog.csdn.net/chenhao0568/article/details/100728376