2013-01-19 52 views
1

如下面的语句所示,它匹配一个字符串开头,后面跟着一个或多个数字。你能向我解释为什么最终会以0而不是1结束?
但是,如果我仅删除^,则它输出1。据我所知,^匹配一个字符串的开头,我没有错误地使用它吗?
在此先感谢。简单的mysql regexp

SELECT "345 boxberry ave " REGEXP '^\d*[[.space.]][[:<:]]b'; 

基本上,我想匹配任何以'b'开头的街道名称。

+0

那么你想匹配什么,第一个字母作为一个数字(位数),并跟随了一个空间或结束的空间?你查询没有任何意义。你为什么不告诉我们你的输入字符串和期望的输出。 – bonCodigo

+0

那么这与起始字符是一个数字无关,不是吗? – bonCodigo

+0

它必须是因为每个字段都以几位数字开头,后跟一个街道名称 – jctank

回答

1

更换\d[[:digit:]]

SELECT "345 boxberry ave " REGEXP '^[[:digit:]]*[[.space.]][[:<:]]b'; 

也请注意,*匹配的零个或多个a字符的任何序列,而+的一个或多个字符的任何序列匹配。我不确定您的要求,但如果需要数字,您可能需要使用+

+0

这很有意义,谢谢 – jctank

+0

您可能还想使用'[[:space:]]'而不是'[[.space。 ]]',以跳过标签。 –

1

在简单的方法,你可以这样做:

SELECT "345 boxberry ave " REGEXP '^[0-9]*[ ]+b.*'; //for begin with zero or more digits than one space and begin with character b 

SELECT "345 boxberry ave " REGEXP '^[0-9]+[ ]+b.*'; //for begin with one or more digits 

不能使用像\ d,在MySQL \ W等的缩写。