我想要一个匹配的正则表达式
https://example.com/studio/
或 https://example.com/studio
不匹配 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*
但它与上面的两个组都匹配。
我也尝试过 https?:\/\/(?:w{3}[.])?example[.]com\/studio\/?
并且它能够匹配只有第一组。但问题是只匹配第二组。请问我该怎么做?
最佳答案
我假设您需要从非结构化文本中解析 URL。假设有空格字符、换行符或字符串末尾,以下内容应该适合您。如果 URL 后面直接有句点或其他字符,则会失败,但很容易修改以支持其他终止字符。
https?:\/\/(?:w{3}[.])?example[.]com\/studio\/?(?:\s|$)
(?:\s|$)
只是表示匹配空格字符(包括行结尾行和新行字符)或匹配字符串的末尾。
编辑
我认为您的意思是第 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/