php - 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) 不是单一格式。这就是为什么我需要扩展的正则表达式格式。
但它根本不匹配。我该怎么办?
解决方案
您可以使用适用于所有测试用例的较短的正则表达式:
^&[^-]+-(?<pagination>\d+)&?$
如果这不符合您的要求,您可能需要添加更多有问题的详细信息。
正则表达式详细信息:
^&
&
:在行首匹配[^-]+
; 匹配 1+ 个非连字符-
: 匹配连字符(?<pagination>\d+)
: 匹配 1+ 个数字并在名为的组中捕获它pagination
&?$
&
:在结束前匹配可选
推荐阅读
- syslog - Rundeck 2.10:如何远程记录到系统日志
- r - 根据多个条件汇总计数
- blazor - 从数据库中选择的 Blazored Typeahead 导入值
- redux - 是在 redux 传奇中阻止 takeEvery 吗?
- uml - 加入节点还是合并节点?
- azure - Azure 身份验证(经典):AAD 多个颁发者 url
- c++ - Boost::asio get_io_service() 在 boost 1.70+ 中的替代品
- azure - 允许 Exchange 混合设置的 Azure 防火墙规则/IP
- javascript - 如何在android中通过URL传递信息。Android 识别“?”之后的部分 作为文件名的一部分
- datastage - 我们可以从 DataStage Jobs 生成数据沿袭吗?