首页 > 解决方案 > php preg_replace 正则表达式替换子匹配中的匹配字符

问题描述

当它们出现在字符串的括号之间时,我想在 +/- 字符周围放置空格,前提是括号前面有一个名为“calc”的“函数”。例如

起始字符串

some text;(some+other+text);calc(some+text-here);some+further-text

所需的输出

some text;(some+other+text);calc(some + text - here);some+further-text

所以使用下面的表达式我可以匹配 calc(*) 部分;

/(?:calc\([^\)]+\))+/m

并且使用以下表达式,我可以匹配所有 +/- 符号,而不仅仅是 calc() 函数中的那些:

/[\+\-](?!(?:calc\([^\)]+\))+)/m

这里有一个问题是我用来构建上述内容的,如果我只想在括号之间进行匹配,它会做我想要的。但是,当我指定额外的“计算”时,它就会中断。

任何进一步的帮助将不胜感激。

标签: phpregexpreg-replace

解决方案


推荐阅读