RegEx用于替换两个定界符之间所有出现的字符

时间:2018-08-16 13:13:23

标签: php regex delimiter

在这里,我需要一些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。

我们将不胜感激!

2 个答案:

答案 0 :(得分:2)

最后成功了!

$postproc = preg_replace('#(DisplayText="|\G(?!\A))([^">]*)"(?!\s*>)#', '$1$2"', $postproc);

因此,我只需要添加DisplayText即可防止RegEx变得过于热心,并开始接触XML中的其他标签。

谢谢大家,尤其是revo的建议,我似乎无法支持revo的评论?

答案 1 :(得分:0)

该代码如何:

https://3v4l.org/6qHhb

[disabled]="!formName.controls['degree'].value"