替换,用PHP的正则表达式不起作用

时间:2012-06-21 09:57:28

标签: php regex

    <?php
        $target="This is a test | dont present me!";
        $pattern="/\| (.*?)/";
       $target=  preg_replace($pattern, '', $target);
        echo $target;
    ?>

我试图摆脱从管道向右走的所有东西..但正则表达式doest工作。我错过了什么?

3 个答案:

答案 0 :(得分:4)

尝试以下方法:

$pattern="/\| .*/";

您根本不需要括号,因为您不重复它并且不会在替换中重复使用。问号在*之后是多余的,两者都是量词。 (并且@wrikken的评论是正确的,*?*的懒惰版本。)

答案 1 :(得分:3)

试试这个:

<?php
    $target="This is a test | dont present me!";
    $pattern="/\|.*/";
    $target=  preg_replace($pattern, '', $target);
    echo $target;
?>

答案 2 :(得分:2)

为什么模式中的?

如果您不需要分组,请尝试使用/\|(.*)/或甚至/\|.*/