判断字符串是否包含正则表达式默认的特殊字符c++

判断字符串是否包含正则表达式默认的特殊字符

业务描述:

上层配置的字符列表中,既有准确的字符串,又有可以进行正则匹配的字符串,这时候需要区分出来那些是正则匹配的字符串。

思路:

判断字符串中,是否存在正则表达式默认的特殊字符,如*^${}等。

代码:

cpp 复制代码
#include <iostream>
#include <regex>

using namespace std;

// check if code contains regex special chars:*$^+?\{}|
static const string regexLimit = {".*[*$^+?\\\\{}|]+.*"};
static const std::regex pattern(regexLimit);
bool isRegex(const std::string& str) {
    try {
        return std::regex_match(str, pattern);
    }
    catch(const std::exception& e) {
        std::cout << "regex error:" << e.what() << endl;
        return false;
    }
}

int main(int argc, char const *argv[])
{
    std::cout<< "hello world!" << std::endl;

    string temp1 = "*demo.*";
    string temp2 = "^com.*.demo.*";
    string temp3 = "car$";
    string temp4 = "com.d+dmode";
    string temp5 = "com.d?dmode";
    string temp6 = "com.d\\dmode";
    string temp7 = "com.d{dmode";
    string temp8 = "com.d}dmode";
    string temp9 = "com.d|dmode";
    string temp41 = "com.demo.test";
    vector<std::string> list;
    list.push_back(temp1);
    list.push_back(temp2);
    list.push_back(temp3);
    list.push_back(temp4);
    list.push_back(temp5);
    list.push_back(temp6);
    list.push_back(temp7);
    list.push_back(temp8);
    list.push_back(temp9);
    
    list.push_back(temp41);
    for (size_t i = 0; i < list.size(); i++)
    {
        bool result = isRegex(list[i]);
        printf("i:%ld isRegex?:%d\n", i, result);
    }

    printf("hello world end.");
    return 0;
}

输出:

cpp 复制代码
hello world!
i:0 isRegex?:1
i:1 isRegex?:1
i:2 isRegex?:1
i:3 isRegex?:1
i:4 isRegex?:1
i:5 isRegex?:1
i:6 isRegex?:1
i:7 isRegex?:1
i:8 isRegex?:1
i:9 isRegex?:0
hello world end.
相关推荐
码匠许师傅2 小时前
【C++ 面试真题】聊聊 C++ 的移动语义与右值引用
java·c++·面试
2603_965148112 小时前
如何解析JSON数据?API返回的商品信息处理教程
开发语言·数据库·python·自动化·json·api
小小龙学IT3 小时前
DuckDB 深度实战:用 C++ 在进程内跑一个「分析型数据库」
数据库·c++
知无不研5 小时前
lambda表达式的使用(3)
开发语言·c++·lambda
cfm_29145 小时前
SpringAI + Ollama 本地大模型
java·开发语言·人工智能·语言模型
C++ 老炮儿的技术栈7 小时前
基于Qt实现轻量化本地音乐播放器
开发语言·c++·qt·c·播放器·音乐
qq_448011167 小时前
C语言中的柔性数组
c语言·开发语言·柔性数组
小白学大数据7 小时前
长周期爬虫的数据一致性:断点续爬 + 事务回滚保障采集质量
开发语言·爬虫·测试工具
zlinear数据采集卡7 小时前
D223上位机C#开发实战:从帧解析到波形显示的完整实现
开发语言·arm开发·嵌入式硬件·fpga开发·开源·c#
Poo_Chai7 小时前
QT emit信号后完整处理流程,包括槽函数响应流程
java·开发语言·数据库