Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.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 regexp都失败了?_Php_Regex - Fatal编程技术网

为什么我的两个PHP regexp都失败了?

为什么我的两个PHP regexp都失败了?,php,regex,Php,Regex,或 字符类只描述一个字符。所以[a-zA-Z]描述了a-Z,a-Z中的一个字符。这同样适用于\w(这也是一个字符类) 您忘记描述该字符类中的字符可能出现的数量,如: ?:零次或一次重复 *:零次或多次重复 +:一次或多次重复 字符类[…]只描述一个字符。所以[a-zA-Z]描述了a-Z,a-Z中的一个字符。这同样适用于\w(这也是一个字符类) 您忘记描述该字符类中的字符可能出现的数量,如: ?:零次或一次重复 *:零次或多次重复 +:一次或多次重复 '/^[a-zA-Z]\-[0-9]\


字符类只描述一个字符。所以
[a-zA-Z]
描述了
a
-
Z
a
-
Z
中的一个字符。这同样适用于
\w
(这也是一个字符类)

您忘记描述该字符类中的字符可能出现的数量,如:

  • :零次或一次重复
  • *
    :零次或多次重复
  • +
    :一次或多次重复

    • 字符类
      […]
      只描述一个字符。所以
      [a-zA-Z]
      描述了
      a
      -
      Z
      a
      -
      Z
      中的一个字符。这同样适用于
      \w
      (这也是一个字符类)

      您忘记描述该字符类中的字符可能出现的数量,如:

      • :零次或一次重复
      • *
        :零次或多次重复
      • +
        :一次或多次重复
      
      
      
      
      '/^[a-zA-Z]\-[0-9]\.(csv)+$/'
      您缺少量词,它应该是
      [a-zA-Z]+
      [a-zA-Z]*

      尝试快速优化您的regexp。

      '/^[a-zA-Z]\-[0-9]\.(csv)+$/'
      您缺少量词,它应该是
      [a-zA-Z]+
      [a-zA-Z]*

      尝试快速优化您的regexp。

      您可以执行以下任一操作:

      <?
      $subject = "SPRINT-1.csv";
      $pattern = '/^[a-zA-Z]*\-[0-9]\.csv?$/';
      if(preg_match($pattern, $subject)) {
       echo "Match";
      } else {
       echo "NOPE";
      }
      ?>
      

      在这两种情况下,您忘记了匹配“SPRINT”的字母前的“+”,在第二种情况下,您忘记了匹配“1”的数字

      顺便说一句,您不需要在模式末尾使用“+”,也不需要在csv周围使用()

      但是请努力写一个完整的问题。仅仅发布这样的代码并不容易理解

      最后,如果要测试regexp,请使用。

      您可以执行以下任一操作:

      <?
      $subject = "SPRINT-1.csv";
      $pattern = '/^[a-zA-Z]*\-[0-9]\.csv?$/';
      if(preg_match($pattern, $subject)) {
       echo "Match";
      } else {
       echo "NOPE";
      }
      ?>
      

      在这两种情况下,您忘记了匹配“SPRINT”的字母前的“+”,在第二种情况下,您忘记了匹配“1”的数字

      顺便说一句,您不需要在模式末尾使用“+”,也不需要在csv周围使用()

      但是请努力写一个完整的问题。仅仅发布这样的代码并不容易理解


      最后,如果您想测试regexp,请使用。

      此外,Expresso是编写、理解和测试regex的好工具。因此,Expresso是编写、理解和测试regex的好工具
      <?
      $subject = "SPRINT-1.csv";
      $pattern = '/^[a-zA-Z]*\-[0-9]\.csv?$/';
      if(preg_match($pattern, $subject)) {
       echo "Match";
      } else {
       echo "NOPE";
      }
      ?>
      
      preg_match_all('/^[a-zA-Z]+\-[0-9]\.csv$/i', 'SPRINT-1.csv', $result);
      
      preg_match_all('/^\w+\-\d\.csv+$/i', 'SPRINT-1.csv', $result);