获取给定的URI,如下所示:
one/two/three
如何在斜线之间匹配捕获组中的每个角色?这可以通过以下方法完成:
(.+)\/(.+)\/(.+)
这给了我三个组,其中:
$1 = one
$2 = two
$3 = three
我遇到的麻烦是让一个捕获组可选。我认为这将工作,认为我可以使每组可选(匹配零或更多):
(.+)?\/(.+)?\/(.+)?
有没有一种方法,可以使用Regex或PHP选择性地匹配上述URI的one
、two
或two
?
您可以使用以下正则表达式
代码>^(?:(. ?))?(?:\/(. ?))?(?:\/(. ?))?$
这将使所有组都是可选的。主要的一点是将非捕获组与一起使用量词和
模式以将每个部分捕获到单独的组中,以便您以后可以使用
$n
引用它们。
参见示例。
示例代码:
$re = "/^(?:(.+?))?(?:\\/(.+?))?(?:\\/(.+?))?$/m";
$str = "one/two/three\none/two\none\n\n";
preg_match_all($re, $str, $matches);
相关问题
- 在Hashmap中查找匹配的键/值对
- 我必须取消订阅ActivatedRoute(例如参数)可观察对象吗?
- 您是否需要取消订阅Angular中的路由器参数?
- 在Angular中获取路由参数的有效方法
- 订阅Angular 2中的路由参数和queryParams
- Spring:404错误仅以vo类作为Spring控制器中的参数
- 任务方法的gradle参数顺序
- 我必须把什么作为我的HttpGet方法的uri?
- 如何从arrayList中获取一个对象,通过匹配其中一个字段,而不是通过java中的索引
- 为什么验证Spring控制器请求参数需要@验证?
- MongoDB返回键匹配条件的数组值
- 查找任何字段与搜索字符串匹配的文档[重复]
- 在内联程序集中从命令行获取参数
- 使SVG文本不可选
- 标签添加动态时,未设置宽度以匹配父级
- MongoDB通配符匹配特定键的所有值[重复]
- std::可选-构造空与{}或std::nullopt?
- 长两倍的尺寸和精度不匹配?
- 实现抽象方法时更改参数类型
- 如何使用抽象类的子类型作为抽象方法参数的类型?