这个有趣的问题Regex匹配任何东西(包括空字符串),除了特定的给定字符串,关注如何在MySQL中进行负面预测.海报想要获得效果
Kansas(?! State)
因为MySQL没有实现预见断言,所以提出了许多答案
Kansas($|[^ ]| ($|[^S])| S($|[^t])| St($|[^a])| Sta($|[^t])| Stat($|[^e]))
海报指出,这是一个PITA,可以用于潜在的大量表达.
是否有PCRE(或其他软件包)的脚本/实用程序/模式将PCRE(如果可能)转换为不使用Perl时髦功能的等效正则表达式?我完全清楚一些Perl风格的正则表达式不能说是一个普通的正则表达式,所以我不希望这个工具做不可能的事情,当然!
你不想这样做。将高级功能转换为基本功能实际上并不是令人难以置信的困难 - 这只是编译器的另一种风格,编译器编写者是非常聪明的人 - 但时髦功能解决的大多数问题是(a)不可能用标准正则表达式,因为它们识别非常规语言,因此您必须近似它们,以便至少它们适用于有限长度的文本或 (b) 可能,但只能使用指数大小的正则表达式。“指数”是“不要去那里”的意思。如果您尝试对实际想要处理的任何内容使用指数解决方案,您将陷入内存不足错误和看似无限循环的困境。
换句话说,进入这里的人放弃所有希望。实际上,让正则表达式做它擅长的事情并使用其他工具完成其余的事情实际上总是更好。即使是像反转正则表达式这样简单的事情,使用原始正则表达式与否定运算符相结合也比使用精确的正则表达式反转器产生的怪物要容易得多。