首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >cloudinary url的Regex群

cloudinary url的Regex群
EN

Stack Overflow用户
提问于 2021-05-07 04:18:56
回答 2查看 258关注 0票数 2

我试图捕捉一个url的不同部分,而忽略了有时会出现的部分。

我尝试使用和扩展在这里找到的正则表达式,但运气不佳。https://gist.github.com/ahmadawais/9813c44b7e51c2c3540d2165d6c6cc65

以这个例子为例

代码语言:javascript
复制
https://res.cloudinary.com/test-site/image/upload/v1619174590/folder/path/cjtdn73cleqagpy4fqza.jpg

https://res.cloudinary.com/test-site/image/upload/ar_1:1,c_fill,f_auto,g_auto,w_700/v1619174590/folder/path/cjtdn73cleqagpy4fqza.jpg

https://res.cloudinary.com/test-site/image/facebook/fb_id

res.cloudinary.com:主机

测试站点:cloudname

上传/facebook:resource_type

v1619174590/rg/collective/media/cjtdn73cleqagpy4fqza.jpg:id

我需要忽略/upload/和/v之间的所有内容,我已经使用//upload/.*?\b(?=v1)/完成了这一任务,但是如果资源类型是facebook且没有/v123,则不考虑此问题。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-05-07 16:13:21

您可以使用

代码语言:javascript
复制
https?:\/\/(?<host>[^\/]+)\/(?<cloudname>[^\/]+)\/[^\/]+\/(?<resource_type>[^\/]+)(?:\/[^\/,]*,[^\/]*)?\/(?<id>.*)
https?:\/\/([^\/]+)\/([^\/]+)\/[^\/]+\/([^\/]+)(?:\/[^\/,]*,[^\/]*)?\/(.*)

第一种正则表达式符合支持命名捕获组的ECMAScript 2018+标准,而第二种只包含常规的、编号的捕获组。

regex演示

详细信息

  • https?:\/\/ - https://http://
  • ([^\/]+) -第1组(主机):除/ - \/以外的一个或多个字符-a / char
  • ([^\/]+) -第2组(云名称):/以外的一个或多个字符
  • \/[^\/]+\/ - /,除//以外的任何一个或多个字符。
  • ([^\/]+) -第3组(资源类型):/以外的一个或多个字符
  • (?:\/[^\/,]*,[^\/]*)? -一个可选的序列
    • \/ -a / char
    • [^\/,]* - /,以外的零或多个字符
    • , -逗号
    • [^\/]* -除/以外的零个或多个字符

  • \/ -a / char
  • (.*) -第4组(id):字符串的其余部分。
票数 1
EN

Stack Overflow用户

发布于 2021-05-07 17:41:24

我假设您的问题是特定于Cloudinary URL格式的。如果这是正确的,URL格式将遵循以下模式:

  1. 协议(http或https)
  2. 域(res.cloudinary.com)
  3. 云名称/子帐户名称
  4. 资源类型(图像、视频或原始)
  5. 可见性(上传、认证)
  6. 转换(或链式转换)
  7. 版本号
  8. 在Cloudinary术语中,您的资源路径也被称为public-id。
  9. 扩展(请注意,在Cloudinary中,扩展不被视为公共id的一部分)

在您的示例URL 700/v1619174590/folder/path/cjtdn73cleqagpy4fqza.jpg中,这将映射如下:

  1. https协议
  2. res.cloudinary.com -域
  3. 测试站点-云名称
  4. 图像资源类型
  5. 上传-可见性(公共资产)
  6. ar_1:1,c_fill,f_auto,g_auto,w_700 -转换
  7. v1619174590 -版本号
  8. 文件夹/path/cjtdn73cleqagpy4fqza
  9. jpg -分机如果没有f_auto,结果将是一个JPG图像。

使用此逻辑,捕获大多数URL的正则表达式如下:

代码语言:javascript
复制
(https?)\:\/\/(res.cloudinary.com)\/([^/]+)\/(image|video|raw)\/(upload|authenticated)\/(.*)\/(v[0-9]+)\/(.+)(?:\.[a-z]{3})?
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67428975

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档