Php 单引号正则表达式

Php 单引号正则表达式,php,regex,Php,Regex,在花了很长时间试图找到一个好的正则表达式来查找单引号(“”)并用单引号(›è)替换单引号(›è)之后,考虑到撇号,我得出了以下结论: '((([^']*)*[^']*)+)” 我已经在PHP Live Regex上成功地测试了它。但是,它只适用于preg_match,有时也适用于preg_replace(作为替换,我使用›$1è) 这可能是反向引用的问题吗?有人知道更好的解决方案吗 编辑: 我遇到的问题是,当我试图更改类似于的字符串时,会出现灾难性的回溯 one ‘two’s’ ‘three’

在花了很长时间试图找到一个好的正则表达式来查找单引号(“”)并用单引号(›è)替换单引号(›è)之后,考虑到撇号,我得出了以下结论:

'((([^']*)*[^']*)+)”

我已经在PHP Live Regex上成功地测试了它。但是,它只适用于preg_match,有时也适用于preg_replace(作为替换,我使用
›$1è

这可能是反向引用的问题吗?有人知道更好的解决方案吗

编辑

我遇到的问题是,当我试图更改类似于的字符串时,会出现灾难性的回溯

one ‘two’s’ ‘three’ four

你可以用

‘((?:[^‘]*’)*[^‘]*)’


主要更改是删除外部的
(…)+
,这导致了嵌套的quanitifier问题。
[^']*')*
[^']*
都可以匹配emtpy字符串,当使用
+
量词将其包含在组中时,完成匹配的步骤数呈指数增长。

您能提供任何示例字符串吗?还有,你遇到了什么问题?还有,可疑的结果会很有用。请随意修改以显示你遇到的问题。是的,它说的是灾难性的回溯!:-(感谢您的参考,@Stribizev将更经常地访问该网站。@Num6预期的结果非常简单:将
1'2'3'4
更改为
1›2'2'23è3è4
可以修复您所有的输入字符串?您提供的一个字符串实际上不会导致灾难性的回溯,但它确实会很明显,问题在于组内的嵌套量词和可选模式。
‘((?:[^‘]*’)*[^‘]*)’