3

我有一个(假定格式正确)正则表达式 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。有替代方案吗?我搞砸了什么吗?有没有更好的办法?

4

1 回答 1

0

好吧,有一个快速的两步方法来测试这个。您的函数的第一行可以删除转义字符,而不是在一个正则表达式中测试转义字符通配符,然后第二行将测试剩余字符串的通配符类型表达式。

.*((\[.+?\])|(\{[0-9]*,[0-9]*\})|(\*)|(\+)).*

将匹配包含任何 *、+、{#、#} 或 [] 表达式的字符串。在您的函数中,返回传递的字符串是否与此表达式匹配。

于 2013-08-01T18:55:07.013 回答