*. 可以使用正则表达式进行比较

how *. can be compared using regular expression?

本文关键字:比较 正则表达式 可以使      更新时间:2023-10-16
string str;
if (str = 1.t) || (str = 2.t) || ........ || (str = n.t) {
  // some code

}

基本上我必须检查int后面跟着"。t"

您想要的正则表达式是[0-9]+.t

使用增加。如果你需要一个正则表达式引擎

如果您的字符串始终是int后跟.t

,则有一种方法(不带正则表达式)
  1. 中查找子字符串.t
  2. 如果你找到它,从
  3. 字符串中删除它
  4. 尝试将字符串转换为数字(如boost::lexical_cast,因为这将抛出一个异常,如果它不能转换字符串),失败,尝试strtol并检查它是否消耗了完整的字符串。

为了使用c++中的regExp功能,必须使用额外的库,而boost提供了这样的功能。我发现johndcook.com下面的解释很有帮助。

对于这种情况,正则表达式是多余的。
试试这个:

bool testIntFollwedByTab(std::string const& test)
{
    std::stringstrean  teststream(test);
    int  num;
    char c;
    return (teststream >> std::noskipws >> num >> c) && (c == 't');
}
  • 将字符串test放入流中。
  • 然后从流中读取一个后跟字符的数字。操纵符noskipws表明空白是重要的(否则数字和字符前的前导空白将被静默删除)。
    • 如果失败(因为没有数字后跟字符),则设置流的坏位,并将流转换为false,返回语句返回false。
    • 如果这是成功的,然后我们测试,看看是否字符读取为't'

或者在正常代码中(一行):

int num; char c;
if ((std::stringstream(str) >> std::noskipws >> num >> c) && (c == 't'))
{
    // Do Work
}