gpt4 book ai didi

Java regEx URL 匹配问题

转载 作者:行者123 更新时间:2023-12-01 15:19:43 27 4
gpt4 key购买 nike

像往常一样,提前谢谢您。

我正在尝试熟悉 regEx,但在匹配 URL 时遇到问题。

这是一个示例 URL:

www.examplesite.com/dir/2012/06/19/title-of-some-story/FAQKZjC3veXSalP9zxFgZP/htmlpage.html

这是我的正则表达式分割:

[site]/[dir]*?/[year]/[month]/[day]/[storyTitle]?/[id]/htmlpage.html

[id] 是一个长度为 22 个字符的字符串,可以是大写或小写字母以及数字。但是,我不想从 URL 中提取该内容。只是澄清一下

现在,我需要从此 url 中提取两个值。

首先,我需要提取目录。但是, [dir] 是可选的,但也可以根据需要指定多个。换句话说,该参数不可能存在,或者可能是 dir1/dir2/dir3 ..etc 。那么,开始我的第一个例子:

    www.examplesite.com/dir1/dir2/dir3/2012/06/19/title-of-some-story/FAQKZjC3veXSalP9zxFgZP/htmlpage.html

这里我需要提取dir1/dir2/dir3,其中dir是一个字符串,它是一个全小写字母的单词(即sports/mlb/games)。目录中没有数字,仅以此为例。

但在这个有效 URL 的示例中:

www.examplesite.com/2012/06/19/title-of-some-story/FAQKZjC3veXSalP9zxFgZP/htmlpage.html

没有[dir],所以我不会提取任何内容。因此,[dir] 是可选的

其次,我需要提取 [storyTitle] 其中 [storyTitle] 也是可选的,就像上面的 [dir] 一样,但是如果有storyTitle 只能有一个。

所以离开我之前的例子

www.examplesite.com/dir/2012/06/19/title-of-some-story/FAQKZjC3veXSalP9zxFgZP/htmlpage.html

在我需要提取'title-of-some-story'的情况下是有效的,其中故事标题是短划线分隔的字符串,并且始终是小写的。下面的例子也是有效的:

www.examplesite.com/dir/2012/06/19/FAQKZjC3veXSalP9zxFgZP/htmlpage.html

在上面的示例中,没有 [storyTitle] 因此使其成为可选

最后,为了彻底起见,不带 [dir] 和不带 [storyTitle] 的 URL 也是有效的。示例:

www.examplesite.com/2012/06/19/FAQKZjC3veXSalP9zxFgZP/htmlpage.html

是一个有效的 URL。任何输入都会有帮助,我希望我很清楚。

最佳答案

这是一个可行的示例。

public static void main(String[] args) {

Pattern p = Pattern.compile("(?:http://)?.+?(/.+?)?/\\d+/\\d{2}/\\d{2}(/.+?)?/\\w{22}");

String[] strings ={
"www.examplesite.com/dir1/dir2/4444/2012/06/19/title-of-some-story/FAQKZjC3veXSalP9zxFgZP/htmlpage.html",
"www.examplesite.com/2012/06/19/title-of-some-story/FAQKZjC3veXSalP9zxFgZP/htmlpage.html",
"www.examplesite.com/dir/2012/06/19/title-of-some-story/FAQKZjC3veXSalP9zxFgZP/htmlpage.html",
"www.examplesite.com/dir/2012/06/19/FAQKZjC3veXSalP9zxFgZP/htmlpage.html",
"www.examplesite.com/2012/06/19/FAQKZjC3veXSalP9zxFgZP/htmlpage.html"
};
for (int idx = 0; idx < strings.length; idx++) {
Matcher m = p.matcher(strings[idx]);
if (m.find()) {
String dir = m.group(1);
String title = m.group(2);
if (title != null) {
title = title.substring(1); // remove the leading /
}
System.out.println(idx+": Dir: "+dir+", Title: "+title);
}
}
}

关于Java regEx URL 匹配问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11123864/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com