正则表达式至少包含一个字符

时间:2014-02-27 07:19:11

标签: c++ regex boost

如何检查字符串是否包含至少一个字符?我想消除只有特殊字符的字符串,所以我决定最简单的方法是检查是否至少有一个字符或数字,所以我创建了[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");
  }
}

对于“苹果是红色”,答案是正确的,但对于“父亲”,它不起作用。

1 个答案:

答案 0 :(得分:1)

apple is red将无法匹配,因为根据here(我的粗体):

  

请注意,仅当表达式与输入序列的整数匹配时,结果才为真。

这意味着空格使其无效。然后继续说(再次,我的大胆):

  

如果要在 序列中搜索某个表达式,请使用regex_search

如果你所寻找的只是一个有效的角色,你可以regex_match()使用".*[a-zA-Z0-9].*"regex_search()使用"[a-zA-Z0-9]"