想要用一個逗號洗掉多個逗號[帶或不帶空格]。嘗試了這個正則運算式,但是失敗preg_replace("/\s{1,5},\s{1,5} /", ", ", $string);
了嘗試了其他解決方案,但找不到任何帶有逗號的空格的解決方案。
樣本輸入
GUWAHATI, TEZPUR, , BAMUNI HILLS, MAHABHAIRAB TEMPLE, AGNIGARH ,
GUWAHATI, TEZPUR , , BAMUNI HILLS,, MAHABHAIRAB TEMPLE, AGNIGARH,
GUWAHATI, , TEZPUR, , BAMUNI HILLS, MAHABHAIRAB TEMPLE, AGNIGARH
預期產出
GUWAHATI, TEZPUR, BAMUNI HILLS, MAHABHAIRAB TEMPLE, AGNIGARH
uj5u.com熱心網友回復:
您可以使用此解決方案:
$s = preg_replace('/^[,\h] |\h*(,)(?:\h*,) \h*|[,\h] $/m', '$1 ', $s);
正則運算式演示
分解:
^[,\h]: 在開始后匹配 1 個逗號或空格|: 或者\h*(,)(?:\h*,) \h*: 匹配 2 個或多個逗號,可選用空格分隔。請注意,我們匹配捕獲組中的單個逗號|: 或者[,\h] $: 匹配結束前 1 個逗號或空格'$1 ': 是否替換為將捕獲的逗號值后跟一個空格
uj5u.com熱心網友回復:
您可以trim使用$string空格和逗號trim($string, ', \n\r\t\v\x00')(字符是默認trim字符 逗號),然后使用preg_replace('/\s*(?:,\s*) /', ', ', ...):
<?php
$string = ", , GUWAHATI, TEZPUR, , BAMUNI HILLS, MAHABHAIRAB TEMPLE, AGNIGARH , ";
echo preg_replace('/\s*(?:,\s*) /', ', ', trim($string, ", \n\r\t\v\x00"));
// => GUWAHATI, TEZPUR, BAMUNI HILLS, MAHABHAIRAB TEMPLE, AGNIGARH
查看PHP 演示
該\s*(?:,\s*) 模式匹配零個或多個空格,后跟一個或多個逗號序列和零個或多個空格。這是正則運算式演示。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/520767.html
標籤:php正则表达式预替换
上一篇:正則運算式獲取不帶括號的數字()
