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

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

4

3 回答 3

4

尝试以下操作:

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

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

于 2012-06-21T10:05:41.887 回答
3

尝试这个:

<?php
    $target="This is a test | dont present me!";
    $pattern="/\|.*/";
    $target=  preg_replace($pattern, '', $target);
    echo $target;
?>
于 2012-06-21T10:04:46.330 回答
2

为什么?在你的模式中?

尝试使用/\|(.*)/或什至只是/\|.*/在您真的不需要分组的情况下。

于 2012-06-21T10:06:09.540 回答