正则表达式,用于查找小于等于大于等号的文本

时间:2011-12-20 17:38:54

标签: php regex string

所以我尝试了这个正则表达式:

$email = '';
preg_match('<.*?>', 'sadfas<email@email.com>', $email);
echo $email[0];

目标结果是提取'email@email.com',因为它位于&lt;之间。和&gt;签署......但它没有用......

我做错了什么?

3 个答案:

答案 0 :(得分:4)

您忘记了正则表达式分隔符(/是一个流行的分隔符)。您还应该使用子模式仅匹配地址而不是<>

preg_match('/<(.*?)>/', 'sadfas<email@email.com>', $email);
echo $email[1];

或者,您可以进行预测并向后看以避免使用子模式:

preg_match('/(?<=<).*?(?=>)/', 'sadfas<email@email.com>', $email);
echo $email[0];

答案 1 :(得分:3)

你需要:

  1. 分隔你的正则表达式
  2. 为您想要的位创建一个捕获组
  3. 代码:

    <?php
    $email = '';
    preg_match('/<(.*?)>/', 'sadfas <email@email.com>', $email);
    print_r($email);
    ?>
    

    试验:

    % php foo.php
    Array
    (
        [0] => <email@email.com>
        [1] => email@email.com
    )
    

    注意您想要的实际字段是$email[1]

答案 2 :(得分:1)

请尝试使用此代码:

preg_match('/<(.*)?>/', 'sadfas<email@email.com>', $email);
echo $email[1];
  1. 您需要将结果括在括号中以返回匹配。
  2. 将模式分隔符添加到PHP匹配(我使用/)