【问题标题】:RegEx (.*?) any thing but one characterRegEx (.*?) 除了一个字符之外的任何东西
【发布时间】:2017-05-22 23:08:50
【问题描述】:

我正在尝试在/^(.*?)\/$ 的行中匹配某种模式。 但是,由于 (.*?) 已经匹配 / 它也匹配 anything/////////// 但我只希望它匹配 anything/

有没有从(.*?) 或替代解决方案中排除/ 的好方法?

【问题讨论】:

    标签: php regex pcre


    【解决方案1】:

    使用negated character class[^\/]

    /^([^\/]*)\/$/
    

    regex demo

    在 PHP 中,您可以使用其他分隔符避免在模式中过度转义,例如 ~:

    $rx = '~^([^/]*)/$~';
    

    详情

    • ^ - 字符串开头
    • ([^\/]*) - 第 1 组捕获除 / 之外的 0+ 个字符
    • \/ - 文字 /
    • $ - 字符串结束。

    请注意,您不需要带有此否定字符类的惰性量词 *?,因为使用贪婪量词 * 会更有效。

    【讨论】:

    • 耶,太棒了!将接受作为其他信息的答案:)
    【解决方案2】:

    有没有一种很好的方法可以将 / 从 (.*?) 或替代解决方案中排除?

    使用否定字符类:

    [^\/]*?
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多