scanf()正则表达式的使用
来源:互联网 发布:淘宝冰点价什么意思 编辑:程序博客网 时间:2024/05/04 08:28
[]内是匹配的字符,^表示求反集,当遇到非集合内的字符时立即终止输入
1. 输入指定范围的小写字母,遇到非法字符立即终止
scanf("%[a-z]",str1);
printf("%s\n",str1);
输入:abc123
输出:abc
//输入带空格的自定范围的字符串
scanf("%[a-z A-Z0-9]", str1);
printf("%s\n",str1);
输入:abc123 def 456
输出:abc123
scanf("%[a-z0-9]", str1);
printf("%s\n",str1);
输入:abc123
输出:abc123
2. 输入不包括指定字符的字符
scanf("%[^a-z]", str1);
printf("%s\n",str1);
输入:123 456abc123
输出:123 456
注意:这种方式可以读入空格
scanf("%[^\n]", str1);
printf("%s\n",str1);
//读入一整行字符串,包括空格
输入:abc123 def
输出:abc123 def
scanf("%[^a-d0-9]", str1);
printf("%s\n",str1);
输入:efxy89
输出:efxy
我们来看看百分号表示什么意思:
%表示选择,%后面的是条件,比如"%s",s是一个条件,表示任意字符,"%s"的意思是:只要输入的东西是一个字符,就把它拷贝给str。"%3s"又多了一个条件:只拷贝3个字符。 “%[a-z]”的条件稍微严格一些,输入的东西不但是字符,还得是一个小写字母的字符。
%* 与%刚好相反,表示过滤满足条件的字符,也就是跳过满足条件的字符,其后一定要有新的%语句,否则无法读入
3. 跳过指定范围的字符再读取指定范围的字符
scanf("%*[a-z0-9]%[^\n]",str1);
printf("%s\n",str1);
输入:a1b2c3ABCdef 123
输出:ABC
4. %和%*组合使用可以提取指定字符串
从<sip:tom@172.18.1.133>中提取tom
const char* url = "<sip:tom@172.18.1.133>";
char uri[10] = {0};
sscanf(url,"%*[^:]:%[^@]", uri);
printf("%s ",uri);
从iios/12DDWDFF@122中提取12DDWDFF
const char* s = "iios/12DDWDFF@122";
char buf[20];
sscanf(s, "%*[^/]/%[^@]", buf);
- scanf()正则表达式的使用
- scanf的正则表达式
- scanf中的正则表达式
- scanf正则表达式
- scanf、sscanf中的正则表达式
- scanf中的正则表达式(ZZ)
- scanf、sscanf中的正则表达式
- scanf、sscanf中的正则表达式
- scanf、sscanf中的正则表达式
- scanf中运用正则表达式
- scanf、sscanf中的正则表达式
- scanf和sscanf中关于正则表达式的技巧
- 从codeforces697B、727B、8A三个字符串类型题中讨论scanf正则表达式的使用
- 正则表达式的使用
- 正则表达式的使用:
- 正则表达式的使用
- 正则表达式的使用
- 正则表达式的使用
- e-人事管理系统-人事档案-变更管理-人员职务变更
- 双端队列C实现很基础很经典——来自Redis
- libvirt 详解(2)
- ubuntu因为内存为0出现的问题及解决方法
- 通用i2c驱动
- scanf()正则表达式的使用
- Struts2缓存解析
- JSTL、JAVA将浮点数字输出格式化
- JS学习笔记
- 获取本地文件大小
- libvirt 详解(3)
- hdu2817
- C++ Primer 学习 (五)
- 黑马训练营java学习日记——二维数组和面向对象(一)