[]内是匹配的字符,^表示求反集,当遇到非集合内的字符时立即终止输入

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);

转载于:https://www.cnblogs.com/orange1438/archive/2013/05/12/4544958.html

scanf()正则表达式的使用相关推荐

  1. C语言sscanf()正则表达式注意及截取字符串 提取数字 转16进制字节数组 超简单

    截取字符串 #include <stdio.h> int main(int argc,char** argv) {const char* in = "a1b2c3ABCdef 1 ...

  2. 20160124.CCPP详解体系(0003天)

    程序片段(01):HelloCGI.c 内容概要:CGI_HelloWorld #include <stdio.h>//01.CGI程序的编写规范 // (1).HTML文本格式声明后面必 ...

  3. Python的re模块 --- 正则表达式操作

    这个模块提供了与 Perl 语言类似的正则表达式匹配操作. 模式和被搜索的字符串既可以是 Unicode 字符串 (str) ,也可以是8位字节串 (bytes). 但是,Unicode 字符串与8位 ...

  4. sscanf高级用法级正则表达式

    sscanf与scanf类似,都是用于输入的,只是后者以屏幕(stdin)为输入源,前者以固定字符串为输入源. 函数原型: int scanf( const char *format [,argume ...

  5. POSIX正则表达式 验证电子邮件地址

    我们最经常遇到的验证,就是电子邮件地址验证.网站上常见.各种网页脚本也都常用"正则表达式"(regular expression)对我们输入的电子邮件地址进行验证,判断是否合法.有 ...

  6. PAT1052---------初步了解正则表达式

    萌萌哒表情符号通常由"手"."眼"."口"三个主要部分组成.简单起见,我们假设一个表情符号是按下列格式输出的: [左手]([左眼][口][右 ...

  7. %d 跟%i 的区别以及scanf和sscanf的用法

    scanf 用%i能够获得8/16进制的值, 比如0011就是9,0x11就是17,当然如果读取到08或者09就会出错了. scanf简介 scanf函数,与printf函数一样,都被定义在stdio ...

  8. java 正则首位8或者9的8位数字_Python 正则表达式re最完整的操作教程

    本文来自Python 官方文档,告诉大家一个好消息,官网有中文版的啦~~ re --- 正则表达式操作 源代码: Lib/re.py 这个模块提供了与 Perl 语言类似的正则表达式匹配操作. 模式和 ...

  9. c函数scanf(),printf()等常用格式字符串

    %d   短整形,一般占两个字节 %u   无符号短整形 %ld  长整形,一般占四个字节 %c   字符型 %s    字符串 主要用在输入输出函数:scanf(),printf()里 /a:蜂鸣, ...

  10. sscanf函数和正则表达式

    From: http://hi.baidu.com/cr0_3/blog/item/c98f6ad0d54d9a0d3af3cfa2.html 看了几篇介绍sscanf函数,真是发现自己好多东西没理解 ...

最新文章

  1. 如何最小化云API升级造成的中断?
  2. mega_[MEGA DEAL]终极Android N开发套件(90%折扣)
  3. vector相关习题
  4. oracle一条语句递归查询父子关系
  5. Java swing 实现下拉框和文本框同步显示
  6. [转载] Java基础之构造方法(函数)何时被调用
  7. thinkPHP定义路由
  8. RocketMQ学习-概览
  9. Tensorflow游乐场
  10. 如何处理SQL Server中附加数据库时出现的错误
  11. Windows 下 cmd 窗口使用 ssh 命令
  12. libmp3lame的接口使用
  13. 37种土豆的制作方法
  14. c# 讯飞语音 sdk
  15. 一度智信:这些方法,帮你解决网店权重下降问题
  16. Windows命令行关闭IE代理
  17. 洛谷 P1948 [USACO08JAN]电话线Telephone Lines【NOIP模拟笨笨的电话线】
  18. 编程表达年月日分秒c语言,年月日时分秒教学反思
  19. GPIO输入输出各种模式(推挽、开漏、准双向端口)详解【转】
  20. c++ gdal 矢量转栅格_GDAL矢量转栅格

热门文章

  1. hdu 3879 Base Station
  2. (第二部)程序员逆天改命之胜天半子
  3. 《OSPF和IS-IS详解》一2.4 理解内部BGP
  4. iOS比较两张图的相似度
  5. 图的更多相关算法-2(最小生成树)
  6. Pytorch模型构造方法
  7. ATT与intel汇编格式区分
  8. 7.1 封装(Java包(package)的概念+访问权限修饰符(public/private/protected/default))
  9. XDebug On Ubuntu
  10. 跨域详解之-----Jsonp跨域