首页 > 解决方案 > Preg_match 正则表达式 php 中的替代值

问题描述

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

$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) 不是单一格式。这就是为什么我需要扩展的正则表达式格式。

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

标签: phpregexmatchpreg-match

解决方案


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

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

正则表达式演示

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

正则表达式详细信息:

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

推荐阅读