检查字符串是否可能与正则表达式匹配

Pottsiex5

基本上,我希望能够有一个正则表达式,例如#[0-9] +并能够检查字符串是否可以匹配它。例如,如果我得到用户输入并且他们输入“#”,则此字符串与正则表达式不匹配,但是如果用户也输入了一些数字,则可能是该字符串。

我知道C ++具有matchs()函数,但是有什么我想要的东西吗?或采取某种方式?

谢谢

西蒙·克雷默

免责声明:以下是一种非常幼稚的方法,既不快捷也不美观。然而,它可以完成简单的正则表达式。我不建议您在不了解其用途的情况下使用它

#include <string>
#include <iostream>
#include <regex>


bool is_valid_regex_string(const std::string& rgx_str)
{
    bool bResult = true;
    try
    {
        std::regex tmp(rgx_str);
    }
    catch (const std::regex_error& e)
    {
        (e);
        bResult = false;
    }
    return bResult;
}

std::string create_partial_regex_string(const std::string& rgx_str)
{
    std::string par_rgx_str;
    for (int i = 1; i <= rgx_str.size(); i++)
    {
        std::string sub_rgx_str = rgx_str.substr(0, i);
        if (is_valid_regex_string(sub_rgx_str))
        {
            if (!par_rgx_str.empty())par_rgx_str += "|";
            par_rgx_str += "(" + sub_rgx_str + ")";
        }
    }
    //return par_rgx_str;
    return "^" + par_rgx_str + "$";
}


void testPartialRegex(const std::string& rgx, const std::string& str)
{
    std::string partialRegexString = create_partial_regex_string(rgx);
    std::regex partRegex(partialRegexString);
    std::cout << "\tTESTING \"" << str << "\" against \"" << partialRegexString << "\" :" << std::endl;

    std::smatch base_match;
    std::cout << "\t\t-> " << (std::regex_match(str, partRegex) ? "true" : "false") << std::endl;
}

void test(const std::string& str)
{
    std::cout << "\n###########################################\nTESTING \"" << str << "\"\n" << std::endl;
    for (int i = 1; i <= str.size(); i++)
    {
        testPartialRegex("#[0-9]+", str.substr(0, i));
    }
    std::cout << "\n###########################################\n" << std::endl;

}



int main()
{

    test("#123456");    
    test("#12a3456");    
    test("#b");    
    test("123456");    
    test("##");    
    return 0;
}

输出:

###########################################
TESTING "#123456"

        TESTING "#" against "^(#)|(#[0-9])|(#[0-9]+)$" :
                -> true
        TESTING "#1" against "^(#)|(#[0-9])|(#[0-9]+)$" :
                -> true
        TESTING "#12" against "^(#)|(#[0-9])|(#[0-9]+)$" :
                -> true
        TESTING "#123" against "^(#)|(#[0-9])|(#[0-9]+)$" :
                -> true
        TESTING "#1234" against "^(#)|(#[0-9])|(#[0-9]+)$" :
                -> true
        TESTING "#12345" against "^(#)|(#[0-9])|(#[0-9]+)$" :
                -> true
        TESTING "#123456" against "^(#)|(#[0-9])|(#[0-9]+)$" :
                -> true

###########################################


###########################################
TESTING "#12a3456"

        TESTING "#" against "^(#)|(#[0-9])|(#[0-9]+)$" :
                -> true
        TESTING "#1" against "^(#)|(#[0-9])|(#[0-9]+)$" :
                -> true
        TESTING "#12" against "^(#)|(#[0-9])|(#[0-9]+)$" :
                -> true
        TESTING "#12a" against "^(#)|(#[0-9])|(#[0-9]+)$" :
                -> false
        TESTING "#12a3" against "^(#)|(#[0-9])|(#[0-9]+)$" :
                -> false
        TESTING "#12a34" against "^(#)|(#[0-9])|(#[0-9]+)$" :
                -> false
        TESTING "#12a345" against "^(#)|(#[0-9])|(#[0-9]+)$" :
                -> false
        TESTING "#12a3456" against "^(#)|(#[0-9])|(#[0-9]+)$" :
                -> false

###########################################


###########################################
TESTING "#b"

        TESTING "#" against "^(#)|(#[0-9])|(#[0-9]+)$" :
                -> true
        TESTING "#b" against "^(#)|(#[0-9])|(#[0-9]+)$" :
                -> false

###########################################


###########################################
TESTING "123456"

        TESTING "1" against "^(#)|(#[0-9])|(#[0-9]+)$" :
                -> false
        TESTING "12" against "^(#)|(#[0-9])|(#[0-9]+)$" :
                -> false
        TESTING "123" against "^(#)|(#[0-9])|(#[0-9]+)$" :
                -> false
        TESTING "1234" against "^(#)|(#[0-9])|(#[0-9]+)$" :
                -> false
        TESTING "12345" against "^(#)|(#[0-9])|(#[0-9]+)$" :
                -> false
        TESTING "123456" against "^(#)|(#[0-9])|(#[0-9]+)$" :
                -> false

###########################################


###########################################
TESTING "##"

        TESTING "#" against "^(#)|(#[0-9])|(#[0-9]+)$" :
                -> true
        TESTING "##" against "^(#)|(#[0-9])|(#[0-9]+)$" :
                -> false

###########################################

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类常见问题

检查字符串是否与Bash脚本中的正则表达式匹配

来自分类Dev

布尔检查字符串是否与ruby中的正则表达式匹配?

来自分类Dev

如何检查字符串是否与正则表达式匹配

来自分类Dev

检查字符串是否匹配特定的正则表达式

来自分类Dev

检查字符串是否与python中的正则表达式完全匹配

来自分类Dev

使用正则表达式检查字符串的开头是否与模式匹配

来自分类Dev

检查字符串的正则表达式以

来自分类Dev

正则表达式检查字符串是否包含指定字符以外的字符

来自分类Dev

检查字符串是否在ruby中以正则表达式开头以匹配“ [NATURAL NUMBER]”

来自分类Dev

如何检查字符串是否与node.js中的任何正则表达式数组匹配?

来自分类Dev

如何使用正则表达式检查字符串是否匹配Oracle中的多个条件?

来自分类Dev

检查字符串是否在ruby中以正则表达式开头以匹配“ [NATURAL NUMBER]”

来自分类Dev

正则表达式检查字符串是否包含非指定字符

来自分类Dev

正则表达式-如何检查字符串是否以给定字符开始或结束?

来自分类Dev

正则表达式检查字符串是否仅由特殊字符组成

来自分类Dev

C中的正则表达式,检查字符串是否包含特定字符

来自分类Dev

使用流星匹配和正则表达式检查字符串

来自分类Dev

正则表达式检查字符串是否包含非数字失败

来自分类Dev

用于检查字符串是否为整数的正则表达式

来自分类Dev

JavaScript检查字符串是否包含正则表达式中的任何单词

来自分类Dev

使用正则表达式检查字符串是否以数字开头

来自分类Dev

正则表达式检查字符串是否只有空格

来自分类Dev

正则表达式,应检查字符串是否包含指定的单词

来自分类Dev

用于检查字符串是否仅包含零的正则表达式

来自分类Dev

检查字符串是否包含带有正则表达式的独立“ c ++”

来自分类Dev

检查字符串是否为正则表达式的其他方法

来自分类Dev

正则表达式来检查字符串是否符合特定条件

来自分类Dev

正则表达式,应检查字符串是否包含指定的单词

来自分类Dev

检查字符串是否以正则表达式数字开头

Related 相关文章

  1. 1

    检查字符串是否与Bash脚本中的正则表达式匹配

  2. 2

    布尔检查字符串是否与ruby中的正则表达式匹配?

  3. 3

    如何检查字符串是否与正则表达式匹配

  4. 4

    检查字符串是否匹配特定的正则表达式

  5. 5

    检查字符串是否与python中的正则表达式完全匹配

  6. 6

    使用正则表达式检查字符串的开头是否与模式匹配

  7. 7

    检查字符串的正则表达式以

  8. 8

    正则表达式检查字符串是否包含指定字符以外的字符

  9. 9

    检查字符串是否在ruby中以正则表达式开头以匹配“ [NATURAL NUMBER]”

  10. 10

    如何检查字符串是否与node.js中的任何正则表达式数组匹配?

  11. 11

    如何使用正则表达式检查字符串是否匹配Oracle中的多个条件?

  12. 12

    检查字符串是否在ruby中以正则表达式开头以匹配“ [NATURAL NUMBER]”

  13. 13

    正则表达式检查字符串是否包含非指定字符

  14. 14

    正则表达式-如何检查字符串是否以给定字符开始或结束?

  15. 15

    正则表达式检查字符串是否仅由特殊字符组成

  16. 16

    C中的正则表达式,检查字符串是否包含特定字符

  17. 17

    使用流星匹配和正则表达式检查字符串

  18. 18

    正则表达式检查字符串是否包含非数字失败

  19. 19

    用于检查字符串是否为整数的正则表达式

  20. 20

    JavaScript检查字符串是否包含正则表达式中的任何单词

  21. 21

    使用正则表达式检查字符串是否以数字开头

  22. 22

    正则表达式检查字符串是否只有空格

  23. 23

    正则表达式,应检查字符串是否包含指定的单词

  24. 24

    用于检查字符串是否仅包含零的正则表达式

  25. 25

    检查字符串是否包含带有正则表达式的独立“ c ++”

  26. 26

    检查字符串是否为正则表达式的其他方法

  27. 27

    正则表达式来检查字符串是否符合特定条件

  28. 28

    正则表达式,应检查字符串是否包含指定的单词

  29. 29

    检查字符串是否以正则表达式数字开头

热门标签

归档