Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/250.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
简单PHP正则表达式问题_Php_Regex - Fatal编程技术网

简单PHP正则表达式问题

简单PHP正则表达式问题,php,regex,Php,Regex,下面哪种正则表达式最有效: 正则表达式必须匹配特定字符串(不区分大小写) 可以后跟[或;,然后是其他内容 以下是“foo”的测试用例: 福-->好 食物不好 福;-->不好,以后需要什么 很好 福[酒吧]->很好 foo[-->糟糕,需要一些东西] fOo[bar]1;2;3-->良好 这是我的测试代码: <?php $tests = array(); $tests[] = 'foo'; $tests[] = 'food'; $tests[] = 'foo;'; $tests[] =

下面哪种正则表达式最有效:

  • 正则表达式必须匹配特定字符串(不区分大小写)
  • 可以后跟[或;,然后是其他内容
  • 以下是“foo”的测试用例:

    • 福-->好
    • 食物不好
    • 福;-->不好,以后需要什么
    • 很好
    • 福[酒吧]->很好
    • foo[-->糟糕,需要一些东西]
    • fOo[bar]1;2;3-->良好
    这是我的测试代码:

    <?php
    
    $tests = array();
    $tests[] = 'foo';
    $tests[] = 'food';
    $tests[] = 'foo;';
    $tests[] = 'FOO;bar';
    $tests[] = 'foo[bar]';
    $tests[] = 'foo[';
    $tests[] = 'foo[]';
    $tests[] = 'fOo[bar]1;2;3';
    
    foreach ($tests as $test)
    {
        echo $test, ' --> ';
        $found = preg_match('REGULAR EXPRESSION HERE', $test);
        if ($found === false || $found < 1)
            echo 'bad';
        else
            echo 'ok';
        echo '<br>', PHP_EOL;
    }
    
    ?>
    

    您可以尝试以下正则表达式:

    /foo(;.+?\[.+?\].*?*)$/i

    如果不需要关闭支架:

    /foo([;\[].+?)*$/i

    如果括号或分号不能是表达式的最后一部分:

    /foo([;\[][^;\[]+)*$/i

    所有人都以优异的成绩通过了考试


    资源:


    您可以尝试以下正则表达式:

    /foo(;.+?\[.+?\].*?*)$/i

    如果不需要关闭支架:

    /foo([;\[].+?)*$/i

    如果括号或分号不能是表达式的最后一部分:

    /foo([;\[][^;\[]+)*$/i

    所有人都以优异的成绩通过了考试


    资源:

    简单:

    /foo($|[[;].)/i
    
    简单:

    /foo($|[[;].)/i
    

    你试过阅读正则表达式的教程/信息吗?这似乎是一个家庭作业,我建议你自己阅读并找到答案,从长远来看,这会对你有所帮助。Idk关于php语法,但python会与foo([|;)(.*)@premiso相匹配。我8年前就辍学了(感谢上帝),我知道这很简单,但我讨厌正则表达式,并尽量避免使用它们。我正在慢慢地学习它们,但仍然:)我仍然需要找到一个关于它们的好网站。我所有的网站都过于复杂…«这是一个关于正则表达式的好网站。我看到你对正则表达式提出了很多问题,请允许我向您推荐:您是否尝试过阅读正则表达式的教程/信息?这似乎是一项家庭作业,我建议您自己阅读并找到答案,从长远来看,这将对您有所帮助。Idk关于php语法,但python将与foo([|)(.*)@premiso相匹配。我8年前就辍学了(感谢上帝),我知道这很简单,但我讨厌正则表达式,并尽量避免使用它们。我正在慢慢地学习它们,但仍然:)我仍然需要找到一个关于它们的好网站。我所有的网站都过于复杂…«这是一个关于正则表达式的好网站。我看到你对正则表达式提出了很多问题,请允许我建议您这样做:@Victive,这很奇怪,您能显示您的代码和您使用的正则表达式吗?@Colin HEBERT在OP中添加了测试代码。只需使用测试的正则表达式更改“REGULAR EXPRESSION HERE”。您的3个正则表达式都与我的预期结果不符。在将其放入字符串之前是否对\进行了转义?您应该具有以下内容:
    $returnValue=preg\u match('/foo(;.+?\\\[.+?\\\].*)$/i',foo;');
    @Colin HEBERT是的,我知道,但仍然是foo;,foo[在他们还可以的时候被贴上坏标签…嗯,从你的第一篇帖子:“foo;-->bad,需要之后的东西;”和“foo[-->bad,需要之后的东西]”@维斯特,这很奇怪,你能显示你的代码和你使用的正则表达式吗?@Colin HEBERT在OP中添加了测试代码。只需用测试的正则表达式更改“正则表达式”。你的3个正则表达式都与我的预期结果不符。你在将\放入字符串之前是否转义了\呢?你应该有以下内容:
    $returnValue=preg\u match('/foo(;.+?\\\\\\[.+?\\\\\\].*$/i,,,,,,,,,,;
    @Colin HEBERT是的,我知道,但仍然是foo;和foo[在他们还行的时候被贴上坏标签…嗯,从你的第一篇帖子:“foo;-->bad,需要之后的东西;”和“foo[-->bad,需要之后的东西]”