这个有趣的问题
Regex to match anything (including the empty string) except a specific given string涉及到如何在MysqL中做一个负面的预测.海报想得到效果
堪萨斯州(?州)
因为MysqL没有实现预先的断言,所以有一些答案是等同的
堪萨斯州($| [^] |($| [^ S])| S($| [^ t])| St($| [^ a])| Sta($| [^ t])| Stat | [^ E]))
海报指出,这是一个PITA为潜在的很多表达.
有没有一个脚本/实用程序/模式的PCRE(或其他一些包),将PCRE(如果可能)转换为不使用Perl的snazzy功能的等效正则表达式?我完全知道一些Perl风格的正则表达式不能被称为普通的正则表达式,所以我不会指望这个工具做不可能,当然!
你不想这样做.实际上,将高级功能转化为基本功能并不是一件容易的事情 – 这只是编译器的另一种风格,而编译器的编写者却是非常聪明的人,但是这些奇特功能所解决的大多数事情都是(a)不可能标准正则表达式,因为它们识别非常规语言,所以你必须对它们进行近似,以至于它们可以用于有限长度的文本或(b)可能,但只能使用指数大小的正则表达式.而“指数”则表示“不要去那里”.如果您尝试在实际想要处理的任何内容中使用指数解决方案,那么您将会在OutOfMemory错误和看似无限循环中淹没.
换句话说,放弃所有的希望,你们进入这里.使用正则表达式来做最好的事情总是更好,用其他工具做其他事情.即使像反正正则表达式这样简单的事情也可以用原始的正则表达式与否定运算符组合来解决,而不是由正确的正则表达式逆变器产生的怪异性.