2012-08-31 204 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

相關問題