2012-08-31 142 views
2

我知道\s是用于匹配任何字符串中的空格的模式。现在,我的问题是什么应该是确切的正则表达式模式来检查字符串的开始或结束处的空格?正则表达式模式检查字符串开头或结尾的空格

所以,如果我有一个字符串“你好世界”,白色空间是在开始,所以它会返回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逐个检查了结果,我得到的结果是那些没有空白的数据。

回答

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:]]$'; 
+0

我想,你有第一个查询,它为我工作。 [[:blank:]]是什么意思? – user1149244

+0

@ user1149244它是空格的字符类,相当于'\ s'。但是'\ s'在'[[:blank:]]'工作时不工作。 – mmdemirbas

+0

谢谢你。 – user1149244

相关问题