【发布时间】:2013-12-10 17:54:34
【问题描述】:
我有一个字符串,它或多或少有 2000 个字符,并且包含 URL(一系列 url)。我想用正则表达式从这个 URL 中获取特定的值,但我不知道如何使用它们。
字符串的一部分是这样的:
$string = [...]http://localhost/project/gallery/http://localhost/project/case/category#/img#/case#/http://localhost/project/case/category#/img#/case#/http://localhost/project/sitemap[...]
我想要的是为每个不同的类别、图像和/或所有出现的案例 (例如: "main-category/45/main/" 和 "secondary-category/51/id12").
如果 category# 超过 1 个单词,则使用“-”(例如:“main-category”)。
img# 始终是 2 到 3 位数字(例如:“45”)。
case# 从纯文本(如果超过 1 个单词,则用“-”连接)到 4 到 5 个字符长的字符串,其中前两个字符是“id”,另一个是3 个字符作为数字 (eg1: "main-case", eg2: "id45").
有一点需要注意,如果这对任何人都有帮助的话,我想得到的是 always 在 case/ 之后。
我想要不包含带有 substr 等的循环的答案/回复。
【问题讨论】:
-
这可能不是正则表达式的工作,而是你选择的语言的现有工具。正则表达式不是你在碰巧涉及字符串的每个问题上挥舞的魔杖.您可能希望使用已经编写、测试和调试过的现有代码。在 PHP 中,使用
parse_url函数。 Perl:URImodule。红宝石:URImodule。 .NET:'Uri' class