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