正则表达式与可选组

我正在寻找一个正则表达式来匹配以下4个案例(抓住id,所以我可以重写网址)

http://localhost/gallery/test-name/123456
http://localhost/gallery/test-name/123456/
http://localhost/gallery/test-name/123456/video-name/159
http://localhost/gallery/test-name/123456/video-name/159/

目前正则表达式在下面,但它并没有在所有情况下正确抓取ID.那里的任何专家都知道我做错了什么?

^(.*)/gallery/(.*)/([0-9]{1,15})(/)?((.*)/([0-9]{1,15})(/)?)?

解决方法

.*(你第二次使用它)是贪婪的.因此它会消耗所有内容直到您的最后一个ID.这就是为什么第一个ID会丢失,如果你有两个.反而让它变得不合适:

^(.*)/gallery/(.*?)/([0-9]{1,15})(/)?((.*?)/([0-9]{1,15})(/)?)?

我还加了一个?到最后.*如果你想为此添加多参数.但是,无论如何,简单地拆分字符串/可能会简单得多.

相关文章

正则替换html代码中img标签的src值在开发富文本信息在移动端...
正则表达式
AWK是一种处理文本文件的语言,是一个强大的文件分析工具。它...
正则表达式是特殊的字符序列,利用事先定义好的特定字符以及...
Python界一名小学生,热心分享编程学习。
收集整理每周优质开发者内容,包括、、等方面。每周五定期发...