Regex 我找不到此正则表达式的正则表达式

Regex 我找不到此正则表达式的正则表达式,regex,Regex,我对正则表达式不是很在行,我这里有一个简单的问题 我有一个这样的链接列表: http://domain.com/andrei/sometext http://domain2.com/someothertext/sometextyouknow/whoknows http://domain341.com/text/thisisit/haha 我只需要两个正则表达式,将其去掉: http://domain.com/andrei/ http://domain2.com/someothertext/ h

我对正则表达式不是很在行,我这里有一个简单的问题

我有一个这样的链接列表:

http://domain.com/andrei/sometext
http://domain2.com/someothertext/sometextyouknow/whoknows
http://domain341.com/text/thisisit/haha
我只需要两个正则表达式,将其去掉:

http://domain.com/andrei/
http://domain2.com/someothertext/
http://domain341.com/text/
这是我需要的第一个正则表达式,我只需要另一个正则表达式来取出域,但我想我会弄清楚,如果有人能告诉我正则表达式只取出我写的东西。

使用正则表达式https?:\/\/[^\/]+\/[^\/]+/.*对于你的第一个任务-用emtpy字符串替换$1


在第二个任务中使用regex https?:\/\/[^\/]+匹配$1是域名。

这是您最可能需要的:

[a-z]+://([^/ ]+)(?:/[^/ ]*/?)?
下面是它的工作原理:

[a-z]+部分用于协议名称,这意味着,1个或多个字母-它将匹配http/https/file/ftp/gopher/foo/任何协议,但如果您只想匹配http,则可以显式写入它 //这就是它所说的; [^/]+是一个或多个非斜杠和非空格字符。它可以是,可以是fqdn,可以是ip地址。无论什么 ?:/[^/ ]*/?? - 这个更复杂。这个最后意味着括号中的整个东西可能在那里,也可能不在那里,这是可选的括号内的直接含义是不要重用此子模式,因为它没有分配一个编号,以后不能由该编号重复使用。[^/]*表示0个或多个非斜杠非空格字符,后面斜杠后面的问号表示斜杠是可选的。 总的来说,这确保了以下各项的匹配:

http://foo/bar/baz/something -> http://foo/bar/
http://hello.world.example.com/ -> http://hello.world.example.com/
http://foo.net -> http://foo.net
ftp://ftp.mozilla.org/pub -> ftp://ftp.mozilla.org/pub
注意1:我并不是故意对正斜杠使用转义来提高表达式的可读性,所以请确保使用其他字符作为分隔符,或者转义/-use\/的所有外观

注2:如果希望表达式不区分大小写,则添加i修饰符a-z将不匹配大写字母,如果希望在一大块文本中进行多个匹配,则添加g修饰符


在匹配项中,子模式0将是整个匹配项,子模式1-仅主机名

这可能就是您要查找的内容:

[a-zA-Z]+://[\w.]*/?:.*/


您拥有组1中的所有匹配项,而组2中只有域。不需要2个正则表达式:

根据您使用的语言,可能最好让内置路径解析库来处理它。喜欢这个标题-它就像一个zen koan。我已经尝试过这个,但是去掉了整个链接:http://[^/].[^/]