正则表达式,用于在C中的随机字符串中查找两位数字

时间:2018-01-25 22:02:27

标签: c regex string parsing

所以这就是我想做的事情: 假设我们在每行上都有一个带有随机符号字符串的.txt文件。我只需打印那些包含精确两位数字的行,如下所示: *

  • (任何非数字字符或无字符)[1-9] [0-9](任何非数字 字符或什么都没有)

我想过使用正则表达式,就像这样。

bool teststuff(char* line)
{
    int comp;
    regex_t myregex;

    // Compile the regular expression
    comp = regcomp(&myregex, "[^0-9]?[1-9][0-9][^0-9]?", REG_EXTENDED | REG_NOSUB) ;
    //([^0-9][1-9][0-9][^0-9])

    // Compare line to the regex
    return 0 == regexec(&myregex, line, NULL , NULL , NULL) ? true : false;
}

它在一定程度上起作用,没有过滤像:

这样的琐碎字符串
2333333|; ²³~ @`1´ ©«» ¤¼× {3} abc def ghi jkl mno pqrs tuv wxyz ABC DEF GHI JKL MNO PQRS TUV WXYZ !

12123asdas

我还在学习C,所以任何建议都会受到赞赏!

1 个答案:

答案 0 :(得分:3)

您可以使用

"(^|[^0-9])[1-9][0-9]($|[^0-9])"

它找到一个2位数字,没有前导零,不包含其他数字。

模式详情

  • (^|[^0-9]) - 字符串开头(^)或任何非数字字符([^0-9]
  • [1-9] - 从19
  • 的数字
  • [0-9] - 任何ASCII数字
  • ($|[^0-9]) - 字符串结尾($)或任何非数字字符([^0-9]