3

我正试图了解正则表达式,但我失败了。

我有一个字符串,我想匹配并删除两个括号之间的每个空格。

例如:

This string (is an example).

会成为:

This string (isanexample).
4

2 回答 2

4

您可以使用preg_replace_callback

$str = "This string (is an example).";
$str = preg_replace_callback("~\(([^\)]*)\)~", function($s) {
    return str_replace(" ", "", "($s[1])");
}, $str);
echo $str; // This string (isanexample).
于 2013-01-25T00:55:41.110 回答
0

您需要递归地执行此操作。一个正则表达式不会这样做。

$line = preg_replace_callback(
        '/\(.*\)/',
        create_function(
            "\$matches",
            "return preg_replace('/\s+/g','',\$matches);"
        ),
        $line
    );

这样做是第一个模式找到括号内的所有文本。它将这个匹配传递给命名方法(或者在这种情况下是匿名方法)。该方法的返回用于替换匹配的内容。

于 2013-01-25T00:12:20.130 回答