我想匹配任何不以“CA”或“CA[任何数字]”结尾的行。如何在 MySQL 中使用 rlike 来做到这一点?(注意它不支持?!等)。
这是正则匹配的正则表达式,我只需要一种方法来否定它: '^.*[C][A][0-9]?$'
(由于尴尬的架构限制,我不想使用not rlike ...
)
诀窍是把它变成你想要匹配的内容的描述。在以下情况下,某些内容不会以 CA 或 CA(digit) 结尾:
它以 A 或数字以外的内容结尾,或
它以 A 以外的东西结尾,然后是一个数字,或者
它以 C 以外的东西结尾,然后是 A,然后是数字,或者
它以 C 以外的东西结尾,然后是 A,或
它等于 A 后跟一个数字,或
它等于 A 或一个数字,或
它是空的。
所以:
rlike '[^A0-9]$|[^A][0-9]$|[^C]A[0-9]$|[^C]A$|^A[0-9]$|^[A0-9]$|^$'
未经测试,未经“优化”,可能在上述某处至少出现一个错误。
那么正则表达式来自表格中的一列,并且那里的大多数模式已经起作用。因此,如果我可以使这种模式在现有结构中工作,那将是最简单的。
我曾经做过类似的事情,我所做的是创建另一个列(我想我使用了一个位域),其中包含正则表达式的选项(不区分大小写、锚定、否定等)。类似的方法可能对您有用。