Preg_match用于正则表达式php中的替代值

时间:2019-01-28 20:02:14

标签: php regex match preg-match

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

$regex = "/^(& (sot-(<pagination>[0-9]+)) | (dorer-(<pagination>[0-9]+)) )? &?$/";
preg_match($regex, "&sot-6", $matches);

此正则表达式应匹配以下值:

&sot-4
&dorer-56&
&sot-281&
&dorer-0

意思是“&”(“ sot-”或“ dorer-”)(数字)(可选“&”)

但是(text)-(number)不是单一格式。这就是为什么我需要扩展的正则表达式格式。

但是完全不匹配。 我该怎么办?

1 个答案:

答案 0 :(得分:1)

您可以使用适用于所有测试用例的较短正则表达式:

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

RegEx Demo

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

RegEx详细信息:

  • ^&:在行首匹配&
  • [^-]+;匹配1个以上非连字符
  • -:匹配连字符
  • (?<pagination>\d+):匹配1个以上的数字并将其捕获到名为pagination的组中
  • &?$:在结束前匹配可选的&