`
tudusi
  • 浏览: 1085142 次
文章分类
社区版块
存档分类
最新评论

在scanf中使用正则表达式

 
阅读更多


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

1.输入指定范围的小写字母,遇到非法字符立即终止

scanf("%[a-z]",str1);

printf("%s\n",str1);

输入:abc123

输出:ab

//输入带空格的自定范围的字符串

scanf("%[a-z A-Z0-9]", str1);

printf("%s\n",str1);

输入:abc123 def 456

输出:abc 123 def 456

scanf("%[a-z0-9]", str1);

printf("%s\n",str1);

输入:abc123

输出:abc

2.输入不包括指定字符的字符

scanf("%[^a-z]", str1);

printf("%s\n",str1);

输入:123456abc123

输出:123456

注意:这种方式可以读入空格

scanf("%[^\n]", str1);

printf("%s\n",str1);

//读入一整行字符串,包括空格

输入:abc123 def

输出:abc123 def

scanf("%[^a-d0-9]", str1);

printf("%s\n",str1);

输入:defxy89

输出:defxy

我们来看看百分号表示什么意思:

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

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

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

3.跳过指定范围的字符再读取指定范围的字符

scanf("%*[a-z0-9]%[^\n]",str1);

printf("%s\n",str1);

输入:a1b2c3ABCdef 123

输出:ABC def 123

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

分享到:
评论

相关推荐

    c语言 sscanf,scanf,fscanf正则表达式用法

    每种语言都对正则表达式有着不同程度的支持,在C语言中,有输入功能的这三个函数对正则表达式的支持并不强大,但是我们还是有必要了解一下。 首先来看看他们的原型: #include int scanf(const char *format, ...)...

    修改版--支持全正则表达式的ssanf_s---cscanf

    `cscanf`则是对`scanf`的增强,它可以在文件流中使用正则表达式进行匹配。这使得在处理复杂格式的文件内容时,能够更加精确地控制数据的读取。同样,`cscanf`也提供了错误处理机制,保证了程序的稳定性。 5. **...

    转到库以将正则表达式捕获组扫描到类似于fmt.Scanf的变量-Golang开发

    该库仍处于试验阶段,可在您的rxscan上使用rxscan提供使用正则表达式捕获组将文本扫描到变量的功能。 该库仍处于试验阶段,使用风险自负。 始终欢迎您提供文稿,如果发现任何问题,请提交问题。 示例扫描字符串输入...

    TC工具GREP的C源程序代码.7z

    在C语言中,我们可以使用标准库如`&lt;regex.h&gt;`来实现正则表达式匹配,或者通过自定义算法来达到相同目的。TC工具的GREP可能使用了自定义算法,也可能利用了标准库,这需要通过阅读源代码来确定。 首先,源代码中可能...

    词法分析器

    在C语言环境中,词法分析器通常由程序员用C语言编写,利用正则表达式或其他方法来定义各种类型的标记。在给定的文件“词法分析 连儒达2014040088”中,我们可以推测这可能是一个由连儒达同学在2014年完成的关于词法...

    简单的词法分析器(c语言)

    在C语言中,可以使用`fgets()`或`fgetc()`函数从输入文件读取源代码,`scanf()`或`sscanf()`进行格式化读取。然后,我们可以定义一个结构体来存储每个识别出的token,包含其类型(如关键字、标识符、常量等)和对应...

    C语言实现电子邮件地址验证程序

    在本文中,我们将探讨如何使用C语言实现一个电子邮件地址验证程序,该程序依赖于POSIX标准的正则表达式库。首先,我们需要理解POSIX正则表达式是什么。POSIX(Portable Operating System Interface)是一组标准,...

    Linux C 一站式学习 III linux开发(无图片过小的错误,方便打印)

    练习:在C语言中使用正则表达式** - **知识点概述**:指导如何在C语言程序中集成正则表达式的处理能力,例如使用POSIX正则表达式库。 #### 第33章 信号 - **1. 信号的基本概念** - **知识点概述**:简述了...

    no-msvcrt:一些不需要msvcrt的C模块

    正则表达式在文本处理和数据验证中扮演着重要角色,但标准C库并不包含正则表达式的支持。`regexp.h`提供了自定义的正则表达式函数集,可能包括编译、匹配、替换等功能,让开发者能够在C程序中实现复杂的文本模式匹配...

    在java中_如何使用输入

    主方法的形式参数是指在 `main` 方法中使用 `String args[]` 数组来接收命令行参数。例如: ```java public class DataKeyboardInput1 { public static void main(String[] args) { System.out.println(args[0]); ...

    歌词解析c语言.rar

    - 正则表达式:虽然C语言标准库不直接支持正则表达式,但可以通过第三方库如PCRE(Perl Compatible Regular Expressions)实现歌词中的模式匹配和提取。 3. 文件操作: - 打开与关闭文件:用fopen函数打开文件,...

    3月全国计算机等级考试二级笔试试卷C语言程序设计试题及参考答案.pdf

    16. 正则表达式:在提供的内容中,正则表达式用在了匹配字符串中,如"name=%snum=%d"用于匹配以"name="开头后跟任意字符的字符串,和以"num="开头后跟一个数字的字符串。 由于提供的内容部分是OCR扫描结果,存在...

    C语言程序设计进阶知识点

    在C语言中,正则表达式查询通常需要借助第三方库,如`PCRE`,实现文本的模式匹配和查找。 通过理解和掌握这些进阶知识点,开发者能更好地编写高效、安全、可维护的C语言程序,无论是开发桌面应用还是进行嵌入式系统...

    第8章 字符串处理

    3. **字符串遍历**:通过循环结构可以逐个访问字符串中的字符,例如在Python中使用for循环,Java中使用增强for循环(foreach)或索引访问。 4. **字符串查找与替换**:`indexOf()`和`lastIndexOf()`方法用于查找子...

    Bracket-Matching.rar_Bracket matching

    - **正则表达式**:在正则表达式中,括号用于分组和捕获子匹配,配对规则也与此类似。 通过理解和实现"Bracket Matching"这个C程序,开发者可以提升对栈数据结构的理解,增强处理字符串和字符逻辑的能力,同时为更...

    show-cartoon.rar_show_简易计算器c

    这可能需要使用到`strtok`等字符串处理函数,或者使用正则表达式。 4. **条件判断**:利用`if...else`语句或`switch`语句来判断用户选择的运算符,并执行相应的运算。 5. **运算逻辑**:根据运算符执行对应的数学...

    奥赛C语言精选100题

    - 正则表达式:了解正则表达式的概念和应用,进行字符串匹配和处理。 通过《奥赛C语言精选100题》的学习,你可以深入理解C语言的精髓,提高解决问题的能力,为参与各类编程竞赛打下坚实的基础。每个题目都是一次...

    根据用户的输入判断输入的合法性

    在这个程序中,最可能使用的是 `std::cin`,因为它是处理整行输入的简便方式。 2. **输入流的读取**: 使用 `std::cin` 获取用户输入时,通常会配合类型转换操作符(如 `&gt;&gt;`)来读取特定类型的值。例如,`std::cin...

    GNU C库参考手册(英文)

    - glibc中的regex库提供了正则表达式的匹配和搜索功能,如regcomp, regexec, regfree等。 9. **网络编程与套接字**: - socket API用于创建网络连接,如socket, bind, connect, listen, accept, send, recv等,...

Global site tag (gtag.js) - Google Analytics