我知道\s
是用于匹配字符串中任何空格的模式。现在,我的问题是在字符串的开头或结尾检查空格的确切正则表达式模式是什么?
所以,如果我有一个字符串“hello world”,则空白处于开头,因此它将返回true
。如果字符串是“hello world”,它也将返回true
。白色空间位于字符串的开头和结尾。
我不需要删除空格,但我只需要检查数据库中的数据是否在开头或结尾都有空格。
这是我的SQL查询,但这不起作用。这只会获取最后有空格的数据:
select * from `data_table`
where `data_content` regexp '[ \f\t\v]$';
上面的查询给出了7个结果,因为只有7个记录在末尾有空格。我需要获取3条记录,这些记录在字符串的开头有空格。
我尝试运行此SQL查询:
select * from `data_table`
where `data_content` regexp '^\s' || `data_content` regexp'\s$';
它给了我87个结果。我通过PHPMYADMIN逐个检查了结果,得到的结果是那些没有空格的数据。
答案 0 :(得分:5)
将\s
用于空格会给我带来问题。所以,我使用[[:blank:]]
代替了 works well :
select data_content as 'leading_or_trailing'
from data_table
where data_content regexp '^[[:blank:]]|[[:blank:]]$';
select data_content as 'leading'
from data_table
where data_content regexp '^[[:blank:]]';
select data_content as 'trailing'
from data_table
where data_content regexp '[[:blank:]]$';
答案 1 :(得分:0)
[[:space:]]
是另一个可以使用的字符类。
此查询将查找所有在行首或行尾都有空格的记录。
SELECT * FROM `foo` WHERE `bar` REGEXP '(^[[:space:]]|[[:space:]]$)'