[英]RegEx for replacing all occurrences of character between two delimiters
我在這里需要一些RegEx神靈的幫助,因為我已經嘗試了兩個小時,無法解決這個問題:
樣本來源:
DisplayText="cf font="Arial" size="10" complexscriptsfont="Arial" complexscriptssize="10" asiantextfont="Arial" fontcolor="595959"">
我想將“”的所有實例替換為"
但前提是這些都在“”內。 即以上應成為:
DisplayText="cf font="Arial" size="10" complexscriptsfont="Arial" complexscriptssize="10" asiantextfont="Arial" fontcolor="595959"">
DisplayText內部文本的確切結構一直是未知的,並且一直在變化,但是無論如何,我們都不希望“外部”。 如您所見,外部的“保持不變。這僅應出現在以DisplayText =”開頭且以“>結尾的字符串中。
因此,找到需要編輯的字符串很容易:
/DisplayText\="(.*?)"\>/
現在,我們只需要在 $ 1美元內用"
替換“ "
。
這是針對PHP的。
幫助將不勝感激!
最終這成功了!
$postproc = preg_replace('#(DisplayText="|\G(?!\A))([^">]*)"(?!\s*>)#', '$1$2"', $postproc);
因此,我只需要添加DisplayText即可防止RegEx變得過於熱心,並開始接觸XML中的其他標簽。
謝謝大家,尤其是revo的建議,我似乎無法支持revo的評論?
這段代碼怎么樣:
$str = 'DisplayText="cf font="Arial" size="10" complexscriptsfont="Arial" complexscriptssize="10" asiantextfont="Arial" fontcolor="595959"">';
$splitted = explode('"', $str);
$splittedSize = count($splitted);
$result = $splitted[0].'"'.implode('"',array_slice($splitted,1,$splittedSize-2)).$splitted[$splittedSize-1].'"';
echo $result;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.