2

我正在努力提高正则表达式

我一直在尝试编写一个正则表达式,它将得到这样的字符串

404;http://subdomain.example.com:80/some-path/gallery/name-of-the-brand/23/?id=56&somethingelse=24...

并且会回来

http://subdomain.example.com/some-path/gallery/

所以我正在编写 2 个正则表达式,然后将它们串在一起。我确信有一种方法可以一次完成所有操作,但我不知道。第一个是http//子域和域:

[http://]+([a-z]+[\.])?[a-z]+[\.][a-z]+

然后我试图为 /some-path/gallery/ 写一个,所以我拿了第一个并添加了端口并尝试使用是一个lookbehind但我没有正确地做到这一点。

(?<=[http://]+([a-z]+[\.])?[a-z]+[\.][a-z]+?([0-9-:]+)[/]

这将在 Coldfusion 服务器上运行

4

1 回答 1

1

也许是这样的:

^(\d+[;])?((http:\/\/)([^/:]*))([:]\d+)?((\/[^/]*)(\/[^/]*)\/).*$

此正则表达式提取(子)域和前 2 个文件夹,它们都很好地分组到捕获组 2 和 6。下面是一个示例:

http://regexr.com/3aaii

于 2015-01-29T14:18:52.633 回答