c ++ regexp允许用点分隔的数字

时间:2017-07-18 12:52:00

标签: c++ regex

我需要rexexp允许最多两个数字连续用点分隔,如1.2或1.2.3或1.2.3.45等,但不是1234或1.234等。我试试这个" ^ [\ d {1,2}。] +",但它允许所有数字。怎么了?

2 个答案:

答案 0 :(得分:5)

你可以试试这个:

^\d{1,2}(\.\d{1,2})+$

Regex 101 Demo

说明:

  1. ^字符串的开头
  2. \d{1,2}后跟一位或两位数字
  3. (捕获组的开始
  4. \.\d{1,2}后跟一个点和一个或两个数字
  5. )捕获组结束
  6. +表示先前的捕获组重复一次或多次
  7. $字符串结尾
  8. 示例C ++源代码(run here):

    #include <regex>
    #include <string>
    #include <iostream>
    using namespace std;
    
    int main()
    {
        string regx = R"(^\d{1,2}(\.\d{1,2})+$)";
        string input = "1.2.346";
        smatch matches;
                if (regex_search(input, matches, regex(regx)))
                {
                    cout<<"match found";
                }
                else
                    cout<<"No match found";
            return 0;
     }
    

答案 1 :(得分:0)

我认为最后一个不应超过2位。

(\d{1,2}\.)+\d{1,2}(?=\b)