在这里,我需要一些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。
我们将不胜感激!
答案 0 :(得分:2)
最后成功了!
$postproc = preg_replace('#(DisplayText="|\G(?!\A))([^">]*)"(?!\s*>)#', '$1$2"', $postproc);
因此,我只需要添加DisplayText即可防止RegEx变得过于热心,并开始接触XML中的其他标签。
谢谢大家,尤其是revo的建议,我似乎无法支持revo的评论?
答案 1 :(得分:0)