[英]Regex to strip all punctuation except '
我想從我導入的文本塊中刪除所有標點符號,除了',例如'in not not。
我現在有
$ words = preg_replace('/ [^ az] + / i','',$ words);
這剝去了所有的標點符號,但我不確定如何包含'。
我怎樣才能做到這一點?
試試吧
preg_replace( '/[^\w\']+|\'(?!\w)|(?<!\w)\'/', '', $words )
這應該替換一個單詞之外的所有非字母和單個撇號
未經測試,如果有效,請告訴我
更新
要刪除數字,只需使用此正則表達式
/[^\w\']+|\'(?!\w)|(?<!\w)\'|\d+/
剛添加\\d+
,所以數字匹配並將被刪除
要使用unicode屬性刪除標點符號,請執行以下操作:
preg_replace('/\p{Punctuation}+/u', '', $words);
要么
preg_replace('/\p{P}+/u', '', $words);
要刪除除單引號之外的所有標點符號:
preg_replace("/[^\P{P}']+/u", '', $words);
看看這里 。
您可以使用
(?!')\p{P}
匹配除撇號之外的任何標點符號。 例如
preg_replace('/(?!\')\p{P}/gu', '', $str);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.