問個Regex的問題

來源:互聯網
上載者:User
以最後一個標點符號或者空格為屆刪除後面的內容,正則怎麼寫?


回複討論(解決方案)

先說編碼是什麼,標點符號是否包括全形的?或者說標點符號指的是什麼民族語言的符號?

基本形式
echo preg_replace('/(.+[ ]).+$/', '$1', 'a b c d'); //a b c

包括全形和半形還有空格

全形也包括那就複雜了……看來只能用unicode範圍,我還是旁觀一下看誰有好想法

全形也包括那就複雜了……看來只能用unicode範圍,我還是旁觀一下看誰有好想法
全形的我用替換直接替換成對應的半形符號,不過現在半形的符號不能全部都匹配上面那個正則。。

基本形式
echo preg_replace('/(.+[ ]).+$/', '$1', 'a b c d'); //a b c
這個只能匹配句號和空格,問下如果要匹配其他的要怎麼寫?比如逗號問號歎號之類!

基本形式
echo preg_replace('/(.+[ ]).+$/', '$1', 'a b c d'); //a b c
還有個問題,如果有標點符號和空格的話,你這個是空格優先,我想要的是不管是空格還是標點符號哪個最後出現以哪個為分界。

echo preg_replace('/(.+[ 這裡列舉你要指定的符號])[^ 和前面列舉的一樣]+$/', '$1', 'a b c d');

注意:
1.紅色和藍色部分要做消歧義,兩個要保持相同
2.不要漏掉了藍色部分前面的^,用來排除的
3.預計GBK編碼還是會有問題,utf-8的話添加/u修正符可以達到預期

開列所有要做分隔的字元在 [ ] 中

嗯,基本沒有問題了,感謝兩位1!!

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.