我有一个(假设格式正确)正则表达式R.我想测试正则表达式是否只是一个匹配(所有字母,数字和转义表达式)或者可以与其他任何东西交换。这个函数“HasWildCards”可以这样工作:
bool a = HasWildCards("asdf");//returns false
bool b = HasWildCards("asdf*");//returns true
bool c = HasWildCards("asdf[123]");//returns true
bool d = HasWildCards("asdf\\[123\\]");//returns false
我正在使用boost :: regex,如果这有帮助的话。我正在考虑检查正则表达式是否与以下内容匹配:
(^(([\[\^\$\.\|\?\*\+\(\{\}])))?(\\[QEdwsDWSbAZzB])?([^\\][\[\^\$\.\|\?\*\+\(\)\{\}])?
我在几个表达式上测试了这个(使用grepWin的RegexTest工具)
所以非转义正则表达式符号开始,非转义标记,正文中的非转义正则表达式sumbol。还有其他选择吗?我搞砸了什么?还有更好的方法吗?
答案 0 :(得分:0)
嗯,有一个快速的两步测试方法。 不是在一个正则表达式中测试转义字符和通配符,而是函数的第一行可以删除转义字符,然后第二行将测试剩余字符串的通配符类型表达式。
.*((\[.+?\])|(\{[0-9]*,[0-9]*\})|(\*)|(\+)).*
将匹配包含任何*,+,{#,#}或[]表达式的字符串。在函数中,返回传递的字符串是否与此表达式匹配。