java - 正则表达式匹配 url 目录路径而不匹配文件名

标签 java regex

我想要一个匹配的正则表达式

https://example.com/studio/https://example.com/studio 不匹配 https://example.com/studio/path-to-file-blah-blahhttps://example.com/studio/path-to-file-blah-blah.html

我尝试了 https?:\/\/(?:w{3}[.])?example[.]com\/studio\S* 但它与上面的两个组都匹配。

我也尝试过 https?:\/\/(?:w{3}[.])?example[.]com\/studio\/? 并且它能够匹配只有第一组。但问题是只匹配第二组。请问我该怎么做?

最佳答案

我假设您需要从非结构化文本中解析 URL。假设有空格字符、换行符或字符串末尾,以下内容应该适合您。如果 URL 后面直接有句点或其他字符,则会失败,但很容易修改以支持其他终止字符。

https?:\/\/(?:w{3}[.])?example[.]com\/studio\/?(?:\s|$)

(?:\s|$) 只是表示匹配空格字符(包括行结尾行和新行字符)或匹配字符串的末尾。

Regex Demo

编辑

我认为您的意思是第 2 组是:

https://example.com/studio/path-to-file-blah-blah
https://example.com/studio/path-to-file-blah-blah.html

为了匹配这些,您需要以下正则表达式:

https?:\/\/(?:w{3}[.])?example[.]com\/studio\/\S+

我所做的唯一更改是最后一个字符是 \S*,但它应该是 \S+

* 表示 0 个或多个

+ 表示 1 或更多。

希望这能满足您的需求。如果我还没开始,如果你给这些组贴上标签,它会帮助我理解,这样我就可以编写正确的正则表达式。

关于java - 正则表达式匹配 url 目录路径而不匹配文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39988939/

相关文章:

java - 如何使用正则表达式将最后一个字母替换为java中的另一个字母

javascript - 用双引号复合替换 float

regex - 替换无效的文件名字符

regex - 需要 Linux 中文件每一行的最后一个完整单词

.net - 正则表达式由逗号分隔而不是在括号内(.NET)

java - 首先按值排序键值对,然后按键排序。 (类似于基数排序)。我需要维护键值关系

java - 子线程未启动

java - 如何像 Chrome 或 Firefox 一样进行增量软件更新和重启

java - 在DAO层还是Delegate层哪里处理异常?

c# - 正则表达式帮助 : My regex pattern will match invalid Dictionary