这个有趣的问题Regex to match anything (including the empty string) except a specific given string关注的是如何在MySQL中做一个消极的展望。这张海报想得到的效果是
Kansas(?! State)
由于MySQL没有实现前瞻性断言,因此出现了许多类似的答案。
Kansas($|[^ ]| ($|[^S])| S($|[^t])| St($|[^a])| Sta($|[^t])| Stat($|[^e]))
该海报指出,这是一个潜在的很多表达做皮塔。
是否有PCRE的脚本/实用程序/模式(或其他包)将PCRE (如果可能的话)转换为不使用Perl的时髦特性的等效正则表达式?我完全意识到一些Perl风格的正则表达式不能作为一个普通正则表达式来声明,所以我当然不会期望这个工具做不可能的事情!
发布于 2010-06-04 09:24:46
你不会想这么做的。实际上,将高级特性转化为基本特性并不困难--这只是编译器的另一种风格,编译器编写人员是相当聪明的人--但这些时髦特性解决的大多数事情都是(a)无法用标准正则表达式来解决的,因为它们识别非常规语言,所以您必须对它们进行近似,这样它们至少可以在有限长度的文本或(b)可能的情况下工作,但只能使用指数大小的正则表达式。“指数”是指“不要去那里”。如果你试图在你想要处理的任何东西上使用指数解,你就会被OutOfMemory错误和看似无限循环所淹没。
换句话说,你们这些进入这里的人,要放弃所有的希望。实际上,让regex做它擅长的事情,然后用其他工具做剩下的事情,这几乎总是更好的。即使是像反求正则表达式这样简单的事情,用原始正则表达式与否定算子结合也要比用精确正则变换产生的奇异性要容易得多。
https://stackoverflow.com/questions/2837706
复制相似问题