所以这就是我想做的事情: 假设我们在每行上都有一个带有随机符号字符串的.txt文件。我只需打印那些包含精确两位数字的行,如下所示: *
我想过使用正则表达式,就像这样。
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,所以任何建议都会受到赞赏!
答案 0 :(得分:3)
您可以使用
"(^|[^0-9])[1-9][0-9]($|[^0-9])"
它找到一个2位数字,没有前导零,不包含其他数字。
模式详情
(^|[^0-9])
- 字符串开头(^
)或任何非数字字符([^0-9]
)[1-9]
- 从1
到9
[0-9]
- 任何ASCII数字($|[^0-9])
- 字符串结尾($
)或任何非数字字符([^0-9]
)