Preg_match 用于正则表达式中的备选值 php
Preg_match for alternative values in regex 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) 不是单一格式。这就是为什么我需要扩展的正则表达式格式。
但是完全不匹配。
我该怎么办?
您可以使用这个适用于所有测试用例的较短的正则表达式:
^&[^-]+-(?<pagination>\d+)&?$
如果这不符合您的要求,您可能需要添加更多相关细节。
正则表达式详细信息:
^&
:在行首匹配 &
[^-]+
;匹配 1+ 个非连字符
-
:匹配连字符
(?<pagination>\d+)
:匹配1+位数字并捕获到名为pagination
的组中
&?$
:匹配可选的&
before end
我想匹配正则表达式中的两个可能性之一。
$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) 不是单一格式。这就是为什么我需要扩展的正则表达式格式。
但是完全不匹配。 我该怎么办?
您可以使用这个适用于所有测试用例的较短的正则表达式:
^&[^-]+-(?<pagination>\d+)&?$
如果这不符合您的要求,您可能需要添加更多相关细节。
正则表达式详细信息:
^&
:在行首匹配&
[^-]+
;匹配 1+ 个非连字符-
:匹配连字符(?<pagination>\d+)
:匹配1+位数字并捕获到名为pagination
的组中
&?$
:匹配可选的&
before end