如何检查字符串是否包含至少一个字符?我想消除只有特殊字符的字符串,所以我决定最简单的方法是检查是否至少有一个字符或数字,所以我创建了[a-zA-Z0-9]{1,}
和[a-zA-Z0-9]+
但是这些都不起作用。
boost::regex noSpecialCharacters("[a-zA-Z0-9]+");
boost::regex noSpecialCharacters2("[a-zA-Z0-9]{1,}");
string tab[SIZE] = {"father", "apple is red"};
for (int i = 0; i < SIZE; i++) {
if (!boost::regex_match(tab[i], noSpecialCharacters)) {
puts("This is it!");
} else {
puts("or not");
}
if (!boost::regex_match(tab[i], noSpecialCharacters2)) {
puts("This is it!");
} else {
puts("or not");
}
}
对于“苹果是红色”,答案是正确的,但对于“父亲”,它不起作用。
答案 0 :(得分:1)
apple is red
将无法匹配,因为根据here(我的粗体):
请注意,仅当表达式与输入序列的整数匹配时,结果才为真。
这意味着空格使其无效。然后继续说(再次,我的大胆):
如果要在 序列中搜索某个表达式,请使用
regex_search
。
如果你所寻找的只是一个有效的角色,你可以regex_match()
使用".*[a-zA-Z0-9].*"
或regex_search()
使用"[a-zA-Z0-9]"
。