【问题标题】:Preg_match() usage with "{}" and "?"Preg_match() 与“{}”和“?”一起使用
【发布时间】:2015-05-11 15:12:12
【问题描述】:

我目前正在尝试使用雷鬼 (PCRE) 和 PhP。

似乎函数 pre_match() 与符号 {} 和?我想知道为什么。有人能帮我吗?

这是我仅用于示例的代码:

    <?php
        $search = "aaaah";

        //Return "valid" while I ask for 3 "a" specifically
        if(preg_match("&a{3}&", $search)){
              echo 'Valid <br/>';
        }else{
              echo 'Invalid <br/>';
        }

        //Also return "valid" while I ask for 0 or 1 "a"
        if(preg_match("&a?&", $search)){
              echo 'Valid <br/>';
        }else{
              echo 'Invalid <br/>';
        }
    ?>

一定是我误解了什么。有人可以解释吗?我在任何地方都没有找到任何东西。先感谢您!

我在 Mac 上使用 MAMP,并使用 utf-8 编码。

【问题讨论】:

    标签: php regex preg-match


    【解决方案1】:

    你得到的结果应该是:

    1. 您连续要求 3 个 a,在您的示例中,可能有两个系列,前 3 个 a 和最后 3 个 a。所以这是一场比赛,因为您没有指定在您的 3 个a 的系列之前或之后必须发生什么。
    2. 您要求一个可选的a 字符。当您查找 0 或 1 a 时,任何输入都将匹配,并且对于您提供的所有内容,无论它是否包含 a,这始终是正确的。

    【讨论】:

    • 对于任何正则表达式,我现在只使用Regex101,它是最优秀的正则表达式工具,可以为您生成PHP语法,这让它们变得轻而易举。
    • 好的,谢谢,现在很清楚了。我认为代码可以检测是否有“超过”一个值。
    • @PierreGiraud 查看 SamNicholson 评论中的链接,它提供了非常有用的 cmets 和解释。
    • 是的。谢谢!
    猜你喜欢
    • 2011-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-19
    • 1970-01-01
    相关资源
    最近更新 更多