gpt4 book ai didi

sql - 正则表达式匹配除特定给定字符串之外的任何内容(包括空字符串)

转载 作者:可可西里 更新时间:2023-11-01 07:49:21 25 4
gpt4 key购买 nike

我想测试一个字符串是否包含 "Kansas" 后跟 "State" 以外的任何内容。

例子:

"I am from Kansas"          true
"Kansas State is great" false
"Kansas is a state" true
"Kansas Kansas State" true
"Kansas State vs Kansas" true
"I'm from Kansas State" false
"KansasState" true

对于 PCRE ,我相信答案是这样的:

'Kansas(?! State)'

但是Mysql的REGEXP好像不喜欢那样。

附录:感谢 David M概括这个问题: How to convert a PCRE to a POSIX RE?

最佳答案

MySQL 没有前瞻性。解决方法是进行两个测试:

WHERE yourcolumn LIKE '%Kansas%'
AND yourcolumn NOT LIKE '%Kansas State%'

我在这里使用 LIKE 而不是 RLIKE 因为一旦你像这样拆分它,就不再需要正则表达式了。但是,如果出于其他原因您仍然需要正则表达式,您仍然可以使用相同的技术。

请注意,这与您请求的“Kansas Kansas State”不匹配。

更新:如果匹配 'Kansas Kansas State' 很重要,那么您可以使用 MySQL 支持的这个丑陋的正则表达式:

'Kansas($|[^ ]| ($|[^S])| S($|[^t])| St($|[^a])| Sta($|[^t])| Stat($|[^e]))'

糟糕:我刚刚注意到 Kip 已经使用与此非常相似的解决方案更新了他的评论。

关于sql - 正则表达式匹配除特定给定字符串之外的任何内容(包括空字符串),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2837267/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com