MySQL:符合这些标准的正则表达式?

时间:2012-02-23 21:00:35

标签: mysql sql regex

我在MySQL中需要一个匹配的正则表达式:

  • 一个有单词的句子
  • 以e
  • 开头
  • 以k
  • 结尾
  • 可以包含[deki](不必包括所有)
  • 长度为3-4个字符

例如,以下内容匹配:

  • “我的名字是 eik
  • “厄运的 edik
  • “herp derp eidk derp”

2 个答案:

答案 0 :(得分:2)

MySQL的扩展正则表达式非常强大;见http://dev.mysql.com/doc/refman/5.6/en/regexp.html。你可以写:

[[:<:]]e[deki]{1,2}k[[:>:]]

(单词开头边界,加上e,加上[deki]中的一个或两个字符,再加上k,加上字尾边界)。

这假设你的单词被标点符号或空格或诸如此类的东西分开,并且它不要求你的字段包含多个单词。

(提示使用\b的答案提示Bohemian。对于字边界,MySQL不支持\b,但它让我想起我的原始答案遗漏的内容。)

答案 1 :(得分:0)

试试这个:

WHERE column RLIKE '[[:<:]]e[deki]{1,2}k[[:>:]]'

编辑:

mysql不支持\b,而是分别使用[[:<:]][[:>:]]作为单词的开头和结尾。正则表达式相应更新