元正则表达式:测试正则表达式是否只是一个字符串(没有正则表达式"wildcards")
Meta Regex: test if regex is only a string (no regex "wildcards")
我有一个(假定格式良好)正则表达式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工具)
所以非转义regex符号开始,非转义标志,非转义regex-sumbol在正文中。有其他选择吗?我搞砸了什么吗?有更好的方法吗?
好吧,有一种快速的两步测试方法。函数的第一行可以删除转义字符,然后第二行将测试剩余字符串中的通配符类型表达式,而不是在一个正则表达式中测试转义字符和通配符。
.*(([.+?])|({[0-9]*,[0-9]*})|(*)|(+)).*
将匹配包含任意*、+、{#、#}或[]表达式的字符串。在函数中,返回传递的字符串是否与此表达式匹配。
相关文章:
- 如何将正则表达式向量与一个字符串匹配?
- 将一个特定字符替换为正则表达式匹配中的另一个字符
- 如何为字符串编写正则表达式,其中包含一个数字至少一个数字,并且不包含任何字母
- 仅查找第一个 std::正则表达式有效匹配
- 如何将正则表达式中组的每次迭代都作为一个单独的组
- 正则表达式匹配是否保证始终只关注最后一个模式?C++
- 如何构造一个前面没有特定字符的正则表达式
- 如何准备一个在匹配时转义部分数字的正则表达式
- 检查一个正则表达式是否涵盖另一个正则表达式
- 我想一次将一个字符串与许多不同的正则表达式进行比较
- 元正则表达式:测试正则表达式是否只是一个字符串(没有正则表达式"wildcards")
- 我的最后一个正则表达式不起作用,但我无法弄清楚原因
- 我如何在另一个进程的内存中通过正则表达式搜索字符串
- 如何编写一个 boost::spirit::qi 解析器来做'?'在正则表达式中做的事情?
- 每个类型匹配一个或多个字符的正则表达式
- 将两个正则表达式结果连接到一个输出字段中,一次只能使用一个
- 使用这个正则表达式,为什么它只捕获最后一个列表项?
- 如何编写一个正则表达式来匹配((113)(96 15)(23))
- Boost正则表达式拆分未命中最后一个单词
- 通过一个简单的示例了解 c++ 正则表达式