繁体   English   中英

正则表达式,匹配没有“http://”的URL和任何其他“/”

[英]Regular Expression, match url without “http://” and any other “/”

我环顾了一会儿,但可能我不能用适当的关键词“谷歌”..所以我在这里。 我需要匹配一个url剥离协议到第一个/

目标:匹配http://中的第一个子字符串到第一个/(可能是最后/不存在)或结束这里出现问题:

我写了这个正则表达式

(?<= //)(。*?)(?= /)

但是这个正则表达式只匹配url,最后除了协议之外至少有1'/'。

这里有一些网址要匹配:

  • http:// www.google.com /(与我的正则表达式相匹配)
  • http:// www.google.com
  • https:// www.google
  • xxx:// www.google.com / hello / bleh blah ...... /
  • xxx:// google.com
  • google.com /blah/hello.php?x=11_x.hi
^(?:\w+://)?([\w.-]+)/?.*$

(Java的双反斜杠)似乎适用于所有示例,包括简单的www.google.com

就像是...

^(https?:\/\/)?([0-9a-zA-Z][-\w]*[0-9a-zA-Z\.)+[a-zA-Z]{2,6})\/

我在一本书中看到了这一点。 这应该考虑变量http / https,禁止空格,并可能停在第一个斜杠。

评论我是否做错了。

这适用于所有示例,但最后一个:

(?<=//)[^/\\s]+

[^/\\\\s]是一个否定的字符类,匹配除/\\s之外的每个字符(空格,例如空格,制表符或换行符)

在Regexr上看到它

什么是行不通的是最后一行。 您想如何决定什么是链接? 如果我使第一部分可选,它将匹配除/和空格之外的每个字符。

看起来你有正确的答案,但你错过了没有尾随“/”的可能性。 尝试这个:

(?<=//)(.*?)(?=/|$)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM