有没有人知道我可以通过匹配任何有效的C#样式正则表达式的正则表达式来到哪里?它甚至可能吗?
仅供参考,我试图这样做的原因是因为我有一个迷你语言允许正则表达式作为其语法的一部分,我拼凑了crummy正则表达式以验证迷你语言语句,但它在一些更复杂的表达式上失败了.迷你语言语法通过eBNF和正则表达式的组合来定义.我可以在C#中进行这种"验证",但我认为如果这种方法成为可能,那将是最清晰和最佳的关注点分离.
谢谢,布莱恩
Joe*_*oey 10
不,你不能.至少不一般.正则表达式描述了常规语言,其特征在于它们不能包含任意嵌套表达式.所以像
(ab(?:cd)e(fg))
Run Code Online (Sandbox Code Playgroud)
用单独的正则表达式验证已经几乎不可能了.虽然某些正则表达式允许递归下降到匹配(例如Perl)或平衡捕获组,它们可以在某种程度上模拟它,但它绝对不是用于这项工作的工具,你不应该试图将它变成一个.
你可以做的只是尝试编译你想要验证的表达式.如果模式无效,.NET的正则表达式引擎将抛出异常:
var compiledRegex = new Regex(someString);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
274 次 |
| 最近记录: |