3

我知道这\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一一检查了结果,我得到的结果是那些没有空格的数据。

4

2 回答 2

5

使用\s空格给我带来了问题。所以,我[[:blank:]]改用了,效果很好

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:]]$';
于 2012-08-31T11:40:09.120 回答
0

[[:space:]]是另一个可以工作的字符类。

此查询将查找在行首或行尾有空格的所有记录。

SELECT * FROM `foo` WHERE `bar` REGEXP '(^[[:space:]]|[[:space:]]$)'
于 2019-02-20T23:01:56.940 回答