在MySQL中,我有以下Regexp:
"^[0-9]+[a-z]?(\s?\-\s?[0-9]+[a-z]?)?$"我测试它的字符串是"1 - 3" (任何数字都应该在这里工作),因此产生了以下MySQL:
SELECT
"1 - 3" REGEXP "^[0-9]+[a-z]?(\s?\-\s?[0-9]+[a-z]?)?$"false的结果。问题是,在我的regexp模式中,这不是一个错误,因为如果我在开始时去掉^,或者在结束时去掉$,那么结果就是$。
这是一个bug吗?如果是的话,有解决办法吗?还是我做错什么了?
提前感谢!
Ps.:正则表达式的目的是将房屋号从一条街道上取出来,在字符串中的任意位置都有这个数字。
发布于 2015-08-21 09:55:11
MySQL在Regexes中不支持\s。
使用[[:space:]]代替:
SELECT
"1 - 3" REGEXP "^[0-9]+[a-z]?([[:space:]]?\-[[:space:]]?[0-9]+[a-z]?)?$"返回1。
https://stackoverflow.com/questions/32137351
复制相似问题