我想要匹配的不与“CA”或“CA [任意数量]”末端的任何行。我怎样才能做到这在MySQL中使用RLIKE? (请注意,不支持?!等)。

下面是一个积极的匹配正则表达式,我只是需要一种方法来否定它:'^.*[C][A][0-9]?$'

(由于尴尬架构限制,我不想使用not rlike ...

有帮助吗?

解决方案

诀窍是把它变成的描述你的的要匹配。 东西并不在CA或CA(位)结束时:

有与除A以外的东西,或位结束时,或者

有与A以外的东西结尾,则数字或

有与除C以外的内容结束,则A,然后是数字,或

有与除C以外的内容结束,则A,或

它等于一个后面跟着一个数字,或

它等于A或数字,或

它是空的。

所以:

rlike '[^A0-9]$|[^A][0-9]$|[^C]A[0-9]$|[^C]A$|^A[0-9]$|^[A0-9]$|^$'

未经测试,非“优化的”,或许至少一个错误的某处在上述

其他提示

  

好正则表达式被从列来   在表中,大部分的模式   那里已经工作。所以它会   最简单的,如果我能做出这种格局   现有的结构中工作。

我做了一次类似的,我所做的就是创建另一列(我想我用一个位域)包含的正则表达式(不区分大小写,锚固,否定等)的选项。类似的做法可能为你工作。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top