如何在括号内preg_replace特定的char?

时间:2011-03-07 21:37:35

标签: php regex preg-replace

我收到了一堆像这样的字符串:

test; test2 (2;5%).

我现在要用PHP做的是纠正“;”在括号中所以它看起来像:

test; test2 (2,5%) - mention the ",".

我尝试过的代码:

$string = preg_replace("/\(.;.\)/", ",", $string);

我的眼睛实际上从谷歌搜索流出,所以请帮助我:)

3 个答案:

答案 0 :(得分:6)

1)需要用反斜杠(\

来转义括号

2)未在表达式中包含百分号

3)本来会用一个,

替换整个括号中的表达式(包括括号)

4)正如Zimzat在评论中指出的那样,将句号(.)替换为\d+可能是一个更好的主意,$string = preg_replace("/\((\d+);(\d+%)\)/", "($1,$2)", $string); 匹配数字而不是任何字符。

{{1}}

答案 1 :(得分:0)

您必须捕获;旁边的字符:

$string = preg_replace('/\((\d+);(\d+%)\)/', "($1,$2)", $string);

答案 2 :(得分:0)

在()中替换多个例如逗号的出现我将使用此代码

  $text = preg_replace_callback("/\{((.*),(.*))\}/sim", function($matches){
    return str_replace(',', ':comma:', $matches[0]);
  }, $text);