zoukankan      html  css  js  c++  java
  • sscanf正则表达式用法简介

    简介

    其实sscanf 中的筛选条件并不是严格意义上的正则表达式,只能说是正则表达式的简化版本,直接套用正则表达式可能出错。比如:

    1. 正则表达式中星号*、问号?、加号+、{n,m}分别表示匹配≥0、1个、≥1、n~m个字符,而sscanf中默认匹配任意多个满足条件的字符,直到遇到不满足条件的字符(即相当于默认只有正则表达式星号* 号的功能),不可再使用星号*、问号?、加号+、{n,m}

    2. sscanf筛选条件中需要规定匹配字符个数时,应在%或%*后面加上相应数字

    用法示例

    /*提取字符串括号里的字符*/
    #include<cstdio>
    #include<cstring>
    int main(){
       char str[256];
       sscanf("First (helloWorld): last","%*[^(](%[^)]%*[^
    ]",str);
       printf("$%s$
    ",str); //输出$helloWorld$
       sscanf("First (helloWorld): last","%*[^(](%5[^)]%*[^
    ]",str); //限定5个字符
       printf("$%s$
    ",str); //输出$hello$
       return 0;
    }
    /*
       %*[^(]  	连续匹配非左括号字符First 并丢弃之,遇到左括号停止
       ( 		匹配并丢弃左括号
       %[^)]  	连续匹配非右括号字符helloWorld(遇到右括号停止)并赋值给str
       %*[^
    ] 	连续匹配非换行符的字符,遇到换行符停止(不接收换行符),这部分可省略,不影响结果
       %5[^)]  	限定只匹配5个字符
    */
    

    符号说明

    1. % 代表选择,后跟相应条件
    2. %* 代表过滤(即连续匹配满足条件的字符,并丢弃)
    3. %%* 后面紧跟的数字代表匹配的字符个数
    4. %5[^)]代表匹配5个非)的字符,[]内是筛选的条件,^表示否定,如%[a-z]表示接收小写字母,%[A-Z0-9] 表示接收大写字母及数字
    5. 要匹配中间的字符时,应先将前面的字符用%*过滤掉

    拓展

    1. 提取子串

    // 读取行,并提取第一个括号里的子串
    #include <stdio.h>
    
    int main() {
      char line[256], str[128];
    
      while (fgets(line, sizeof line, stdin)) {
        sscanf(line, "%*[^(](%127[^)]", str);
        printf("|%s|
    ", str);
      }
    
      return 0;
    }
    

    运行样例:

    one (two) three
    |two|
    four (five) six
    |five|
    seven eight (nine) ten
    |nine|
    

    2. 字符串在printfscanf中的使用

    • printf("%5.3s",str+2);表示从str[2]开始输出字符串的至多3个字符,输出不足5位则在左侧用空格补足
    • scanf("%3s",str); 从输入流中提取3个字符赋给str

    参考资料:https://stackoverflow.com/a/24483494/12634621

  • 相关阅读:
    Mongoexport导出数据,Mongoimport导入数据,mongodump备份数据,mongorestore恢复恢复
    php7中使用mongodb的驱动
    windows(X64)+apche2.4+php7.2下安装mongodb
    windows(X64)下安装apche2.4+php7.2+mysql5.7
    Django2.0 path与Django1.x版本url正则匹配问题
    Django: ImportError: No module named 'corsheaders'
    linux开启端口
    MySQL 存储过程传参数实现where id in(1,2,3,...)示例
    ubuntu安装pip3
    在Ubuntu 16.04 安装python3.6 环境并设置为默认
  • 原文地址:https://www.cnblogs.com/DreamEagle/p/12553181.html
Copyright © 2011-2022 走看看