正则表达式替换模式 - PHP

时间:2011-02-24 16:58:48

标签: php regex preg-replace

我需要一些帮助,我有一个替代模式:

/(?<!\S)(\b|\(|\[)(?:\d+\s*x\s*)?\d+(?:\.\d+)?\s*litres($|\s|\.|;|,|\)|\])/is    

功能:

preg_replace('/(?<!\S)(\b|\(|\[)(?:\d+\s*x\s*)?\d+(?:\.\d+)?\s*litres($|\s|\.|;|,|\)|\])/is', '', $string);

替换为'' - 空字符串,在99%的情况下工作得很好,但是有一些不能正常工作。

所以即

瓶子(蓝色,10升) - 将被替换为瓶子(蓝色,而不是瓶子(蓝色)

看起来正确的边界{在上面的示例符号}被视为要替换的字符串的一部分。有什么想法吗?

欢呼声

1 个答案:

答案 0 :(得分:0)

似乎反向引用有效: $ {2}

所以

preg_replace('/(?<!\S)(\b|\(|\[)(?:\d+\s*x\s*)?\d+(?:\.\d+)?\s*litres($|\s|\.|;|,|\)|\])/is', '${2}', $string);

应该这样做。

你猜怎么着?