我的正则表达式有什么问题?

时间:2011-08-01 18:59:52

标签: mysql regex

我希望匹配所有名字,然后 2个或更多空格姓氏的名称。这应该是微不足道的,但我遇到了麻烦。

假设我的表格KCChiefs如此填充:

player
---------------
Matt  Cassel
Jamaal  Charles
Thomas Jones
Dwayne Bowe  
Tony  Moeaki
88 TonyG
TylerTh1gpen

注意:Cassel,Charles和Moeaki有2个空格分隔他们的名字和姓氏。

目前,我在SQL语句中的正则表达式如下:

SELECT * FROM KCChiefs WHERE player REGEXP '^[A-Za-z]+[:space:]{2,}[A-Za-z]+$'

据我了解,我的模式匹配

  • 一个或多个A-Z或a-z
  • 的字符
  • 后跟2个或更多空格
  • 后跟一个或多个A-Z或a-z
  • 的字符

但是,我最终得到了一个空结果集。额外的一双眼睛可以帮助我看到我没看到的(或误解)吗?

3 个答案:

答案 0 :(得分:5)

尝试

SELECT * FROM KCChiefs WHERE player REGEXP '^[A-Za-z]+[[:space:]]{2,}[A-Za-z]+$'

否则[:space:]将被解释为“:spac或{{中的一个字符1}}”。

答案 1 :(得分:3)

我相信你有正确的正则表达式,但语法不正确。请使用^[a-Za-z]+[[:space:]]{2,}[A-Za-z]+$尝试。

参考:http://dev.mysql.com/doc/refman/5.1/en/regexp.html

答案 2 :(得分:3)

我相信你的角色类不正确。试试[[:space:]]