scanf()正则表达式的使用
[]内是匹配的字符,^表示求反集,当遇到非集合内的字符时立即终止输入
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()正则表达式的使用相关推荐
- C语言sscanf()正则表达式注意及截取字符串 提取数字 转16进制字节数组 超简单
截取字符串 #include <stdio.h> int main(int argc,char** argv) {const char* in = "a1b2c3ABCdef 1 ...
- 20160124.CCPP详解体系(0003天)
程序片段(01):HelloCGI.c 内容概要:CGI_HelloWorld #include <stdio.h>//01.CGI程序的编写规范 // (1).HTML文本格式声明后面必 ...
- Python的re模块 --- 正则表达式操作
这个模块提供了与 Perl 语言类似的正则表达式匹配操作. 模式和被搜索的字符串既可以是 Unicode 字符串 (str) ,也可以是8位字节串 (bytes). 但是,Unicode 字符串与8位 ...
- sscanf高级用法级正则表达式
sscanf与scanf类似,都是用于输入的,只是后者以屏幕(stdin)为输入源,前者以固定字符串为输入源. 函数原型: int scanf( const char *format [,argume ...
- POSIX正则表达式 验证电子邮件地址
我们最经常遇到的验证,就是电子邮件地址验证.网站上常见.各种网页脚本也都常用"正则表达式"(regular expression)对我们输入的电子邮件地址进行验证,判断是否合法.有 ...
- PAT1052---------初步了解正则表达式
萌萌哒表情符号通常由"手"."眼"."口"三个主要部分组成.简单起见,我们假设一个表情符号是按下列格式输出的: [左手]([左眼][口][右 ...
- %d 跟%i 的区别以及scanf和sscanf的用法
scanf 用%i能够获得8/16进制的值, 比如0011就是9,0x11就是17,当然如果读取到08或者09就会出错了. scanf简介 scanf函数,与printf函数一样,都被定义在stdio ...
- java 正则首位8或者9的8位数字_Python 正则表达式re最完整的操作教程
本文来自Python 官方文档,告诉大家一个好消息,官网有中文版的啦~~ re --- 正则表达式操作 源代码: Lib/re.py 这个模块提供了与 Perl 语言类似的正则表达式匹配操作. 模式和 ...
- c函数scanf(),printf()等常用格式字符串
%d 短整形,一般占两个字节 %u 无符号短整形 %ld 长整形,一般占四个字节 %c 字符型 %s 字符串 主要用在输入输出函数:scanf(),printf()里 /a:蜂鸣, ...
- sscanf函数和正则表达式
From: http://hi.baidu.com/cr0_3/blog/item/c98f6ad0d54d9a0d3af3cfa2.html 看了几篇介绍sscanf函数,真是发现自己好多东西没理解 ...
最新文章
- 如何最小化云API升级造成的中断?
- mega_[MEGA DEAL]终极Android N开发套件(90%折扣)
- vector相关习题
- oracle一条语句递归查询父子关系
- Java swing 实现下拉框和文本框同步显示
- [转载] Java基础之构造方法(函数)何时被调用
- thinkPHP定义路由
- RocketMQ学习-概览
- Tensorflow游乐场
- 如何处理SQL Server中附加数据库时出现的错误
- Windows 下 cmd 窗口使用 ssh 命令
- libmp3lame的接口使用
- 37种土豆的制作方法
- c# 讯飞语音 sdk
- 一度智信:这些方法,帮你解决网店权重下降问题
- Windows命令行关闭IE代理
- 洛谷 P1948 [USACO08JAN]电话线Telephone Lines【NOIP模拟笨笨的电话线】
- 编程表达年月日分秒c语言,年月日时分秒教学反思
- GPIO输入输出各种模式(推挽、开漏、准双向端口)详解【转】
- c++ gdal 矢量转栅格_GDAL矢量转栅格