我想使用正则表达式比较这两个字符串。为此,我使用了这个问题regex_match
的代码。但由于某种原因,比较返回。如果可能,最好不要更改 string ,因为在它的位置可能存在这种类型的字符串,并且很难添加,例如,转义特殊字符(或正则表达式的其他附加字符)地方。是否可以像本例一样普遍匹配程序名称?false
not*.exe
std::string string("notepad.exe");
std::regex regex("not*.exe");
std::cout << std::boolalpha << std::regex_match(string, regex);
当其中一个完全已知并且另一个包含正则表达式时,如何正确比较相似的字符串?
您的正则表达式是错误的,C++ 字符串文字的字符转义与它无关。
尝试:
测试https://regexr.com/59juu
在代码中:
如果你想匹配节目名称,那么常规赛应该更难。如果是,则根据标签正则表达式的描述细化条件
\
在字符之前添加来完成的[]{}.()?+*^$\|
。?
你不应该逃避,而是用.
;替换 一个*
- 上.*
。^
和结尾的标记。$
该组可以省略,因为它不在分支内使用。如果使用,则必须将其包装在不可捕获的组(?:)
中。PS:一般来说,我不会做所有这些,而是使用适当的算法来检查文件名是否与掩码匹配。