构建一个将接受正则表达式字符串作为输入的正则表达式,并检查其是否有效。基本上,您的正则表达式应该能够验证自己。(任何无效的正则表达式都不应进行验证,因此您不能使用.*
。;))
您的风味必须得到众所周知的实现(Perl,sed,grep,gawk等)的完全支持,并且必须完全支持那些实现所支持的功能。[不用担心律师说话;我只是想消除所有可能导致智能***的漏洞。]
我会对此进行编码,但是我担心它会给那些知道和使用非功能丰富的风味的人带来优势。还是我的担心没有根据?
8
不可能,任意的嵌套括号使正则表达式成为上下文无关的语法,(用波兰记号替换它也需要堆栈)
—
棘手怪胎
@ratchet Augh,您可能是对的。
—
Mateen Ulhaq
存在一些常规语言的扩展名,这些扩展名可能允许匹配方括号,但我不知道该怎么做
—
棘手怪胎
Perl正则表达式一定有可能。
—
彼得·泰勒
用现代语言实现的@BrianVandenberg正则表达式几乎都是非常规的……添加反向引用后,您就可以匹配非常规语言。而且,Perl / PCRE和.NET都足够强大,可以匹配正确的嵌套。
—
Martin Ender 2014年