【发布时间】:2010-05-14 20:08:25
【问题描述】:
我想测试一个字符串是否包含"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?
【问题讨论】:
-
为什么
"Kansas Kansas State"是真的? -
因为它包含“Kansas”,后跟“State”以外的其他内容,即“Kansas State”。理由是我想要所有提到“堪萨斯州”的字符串,无论它们是否也提到“堪萨斯州”。例如,“堪萨斯州和堪萨斯州在锦标赛中互相比赛”。那提到堪萨斯州(不仅仅是堪萨斯州),所以我想匹配它。
-
我添加了更多示例来澄清这一点。
-
我更新了我的答案。看看我的新正则表达式是否适用于 mysql。
-
poster 指出将简单的 PCRE 转换为完整的 POSIX re 可能很乏味,这引发了一个有趣的问题,即如何自动完成。 stackoverflow.com/questions/2837706/…