MySQL正则表达式匹配一行中包含两个或两个以上空格的行



我正在尝试写一个MySQL语句,查找并返回一行中包含2个或更多空格的图书注册。

下面的语句是错误的。

SELECT * FROM book WHERE titles REGEXP '[:space]{2,}';

既然2个空格已经满足你的条件,你真的不需要检查是否有超过2个。此外,如果需要匹配常规ASCII空间(十进制代码32),则不需要REGEXP操作符,可以安全地使用

SELECT * FROM book WHERE titles LIKE '%  %';

LIKE是首选在所有情况下,你可以使用它而不是REGEXP(参见MySQL | REGEXP VS Like)

当您需要匹配大量的空白符号时,您可以使用WHERE titles REGEXP '[[:space:]]{2}'(它将匹配[ trnvf]),如果您只计划匹配制表符和空格,则使用WHERE titles REGEXP '[[:blank:]]{2}'。有关详细信息,请参见POSIX括号表达式

注意,[:class_name:]只能在字符类中使用(即在另一对[...]中使用),否则,它们将无法被识别。

你的POSIX类必须是,

SELECT * FROM book WHERE titles REGEXP '[[:space:]]{2,}';

不需要,

SELECT * FROM book WHERE titles REGEXP '[[:space:]]{2}';

您也可以使用[[:blank:]]

SELECT * FROM book WHERE titles REGEXP '[[:blank:]]{2}';

如果您只是指空格字符:REGEXP ' '。或者你可以使用LIKE "% %",它会更快。(注:其中有2个空格)

blankspace请参见http://dev.mysql.com/doc/refman/5.6/en/regexp.html

最新更新