用正規表示式匹配「空值」

2021-08-24 23:56:24 字數 698 閱讀 1607

最近在做乙個專案,要讀取文字檔案匯入資料庫,,但是為了效能和介面友好的問題,於是打算匯入之前檢查文字檔案的格式是否正確,如果不正確,則作出相應提示而停止匯入,所以要對文字檔案逐行掃瞄,然後檢查每一行的格式,如果不符合約定的格式,則提示使用者對應的行數。自然而然想到用正規表示式。但是就有個問題了,文字檔案中有個title欄位,格式很複雜,可以包括簡繁中文,甚至五角星符號,所以用正規表示式的中文匹配是不現實了,而且還要考慮gbk或者utf8編碼,相當麻煩,後來換個角度想,文字的每一行的不同欄位是用tab鍵分開的,當一行讀進來的時候,需要以tab鍵為分隔符將一行字串拆分成陣列。

比如文字檔案的一行為「t1 t2 t3」(以tab分開)我們規定的格式為「t1 t2 t3 t4」,所以發現,讀進來的一行少了乙個欄位t4,那麼怎麼驗證呢,其實很簡單,不管怎麼樣,因為格式是約定好的 ,我們建立陣列存放的相應欄位是確定的,因而

$a=array('','','','');

迴圈給陣列$a的每個元素賦值,我們可以用正則檢查是否陣列的4個元素都不為空,結果會發現$a[3]為空值,正規表示式裡好像沒看到檢驗空值的,突然想起來\s是匹配空格的,然後又想,\s代表0個空格,那不就是空值麼,

$pattern = "/\s/";

if(preg_match($pattern, $a[3])) echo "ok";

結果答案正合我意,突然恍然大悟,這不就等於if($a[3]=="")麼,汗,饒了那麼大個圈子

正規表示式 匹配

字串 void abtr quint32 ab 表示乙個正規表示式 template class bidirectionaliterator class allocator std allocator sub match bidirectionaliterator class match resul...

正規表示式匹配

請實現乙個函式用來匹配包括 和 的正規表示式。模式中的字元 表示任意乙個字元,而 表示它前面的字元可以出現任意次 包含0次 在本題中,匹配是指字串的所有字元匹配整個模式。例如,字串 aaa 與模式 a.a 和 ab ac a 匹配,但是與 aa.a 和 ab a 均不匹配 解法 首先要想到用遞迴處理...

正規表示式匹配

請實現乙個函式用來匹配包括 和 的正規表示式。模式中的字元 表示任意乙個字元,而 表示它前面的字元可以出現任意次 包含0次 在本題中,匹配是指字串的所有字元匹配整個模式。例如,字串 aaa 與模式 a.a 和 ab ac a 匹配,但是與 aa.a 和 ab a 均不匹配 class solutio...