Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/287.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.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
regex php中可选值的Preg_匹配_Php_Regex_Match_Preg Match - Fatal编程技术网

regex php中可选值的Preg_匹配

regex php中可选值的Preg_匹配,php,regex,match,preg-match,Php,Regex,Match,Preg Match,我想匹配正则表达式中两个可能性中的一个 $regex = "/^(& (sot-(<pagination>[0-9]+)) | (dorer-(<pagination>[0-9]+)) )? &?$/"; preg_match($regex, "&sot-6", $matches); 这意味着“&”(“sot-”或“DOER-”)(数字)(可选“&”) 但是(文本)-(数字)不是单一的格式。这就是为什么我需要一个扩展的正则表达式格式 但这根本不匹

我想匹配正则表达式中两个可能性中的一个

$regex = "/^(& (sot-(<pagination>[0-9]+)) | (dorer-(<pagination>[0-9]+)) )? &?$/";
preg_match($regex, "&sot-6", $matches);
这意味着“&”(“sot-”或“DOER-”)(数字)(可选“&”)

但是(文本)-(数字)不是单一的格式。这就是为什么我需要一个扩展的正则表达式格式

但这根本不匹配。
我该怎么办?

您可以使用这个较短的正则表达式来处理所有测试用例:

^&[^-]+-(?<pagination>\d+)&?$
^&[^-]+-(?\d+&&$

如果不符合您的要求,您可能需要添加更多有问题的详细信息

正则表达式详细信息:

  • ^&
    :在行开始处匹配
    &
  • [^-]+
    ;匹配1+个非连字符
  • -
    :匹配连字符
  • (?\d+)
    :匹配1+个数字并将其捕获到名为
    分页的组中
  • &$
    :在结束前匹配可选的
    &

空格在正则表达式中有意义。添加
x
修饰符以使其格式化。或者,移除它们。此外,命名组是用
(?…)
(?P…)
定义的,但要有两个同名组,需要添加
J
修饰符。请尝试
“~^&(?:p-(?[0-9]+)| page-(?[0-9]+)?&$~J”
,请参阅清除群组周围的空间。我很难看到您所追求的匹配系统。因此,即使我要为您生成一个有效的正则表达式示例,我也不知道它是否在所有情况下都有效。您列出的这些案例,是正则表达式作为输入得到的绝对唯一的案例,还是有一个系统。。。如果是这样,-请更新答案,以便提供一个有益的解决方案。我已经让您很容易理解正则表达式。我现在编辑了它,以便您能够理解模式。不必是“p”和“page”。可能还有别的什么,我的错。我修好了,谢谢。但是(文本)-(数字)不是单一的格式。这就是我需要扩展正则表达式格式的原因。对不起。
^&[^-]+-(?<pagination>\d+)&?$