[英]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.