doudong1117 2015-05-22 14:29
浏览 96
已采纳

正则表达式在第一个空格后排除

<?php

$url = '/#123_abc" data-text="something-something"';
preg_match_all ('(/#.*)', $url, $result);


var_dump($result);

How can I get only /#123_abc ? I want to exclude data-text="something-something"

  • 写回答

3条回答 默认 最新

  • douyun8674 2015-05-22 14:31
    关注

    You can use a negated character class as

    /(^\/#[^"]+)/
    
    • ^ Anchors the regex at the start

    • [^"]+ Negated character class, matches anything other that a ".

      + quantifies the pattern, matches one or more occurence.

    Regex Demo


    Test

    $url = '/#123_abc" data-text="something-something"';
    preg_match_all ('/(^\/#[^"]+)/', $url, $result);
    var_dump($result[0]);
    // => Outputs
    // /#123_abc
    


    P.S : You can prevent the escaping of \ by using different pair of delimiters as
    $url = '/#123_abc" data-text="something-something"';
    preg_match_all ('~(^/#[^"]+)~', $url, $result);
    var_dump($result[0]);
    // => Outputs
    // /#123_abc
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?