【正則】問個正則分割的有關問題,線上求解

來源:互聯網
上載者:User
【正則】問個正則分割的問題,線上求解~
目的:正則分割關鍵字。

假定關鍵字為(中間有多個空格):你 我 她

用星號:
print_r(preg_split("/(\s*)/", $_POST['query']));

結果:Array ( [0] => [1] => ? [2] => ? [3] => ? [4] => [5] => ? [6] => ? [7] => ? [8] => [9] => ? [10] => ? [11] => ? [12] => )

用加號:print_r(preg_split("/(\s+)/", $_POST['query']));
結果:Array ( [0] => 你 [1] => 我 [2] => 她 )

這是為什麼啊?

正則手冊:
* 匹配前面的子運算式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo"。* 等價於{0,}。
+ 匹配前面的子運算式一次或多次。例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等價於 {1,}。

一個匹配零次或多次,一個匹配一次或多次,就一個區別差距就這麼大嗎?我怎麼也沒想明白為什麼星號會造成亂碼~~~



------解決方案--------------------
* 代表 0 次也可以,你不是要按空格來區分嗎? 空格也有個數的~
------解決方案--------------------
應該是匹配了0次
------解決方案--------------------
\s*可能在“你”的編碼的第一和第二個位元組間匹配了0個字元,於是就出亂碼了
------解決方案--------------------
何必用split呢,直接匹配非空不好嗎
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.