簡體   English   中英

RegEx用於替換兩個定界符之間所有出現的字符

[英]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的評論?

這段代碼怎么樣:

https://3v4l.org/6qHhb

$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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM