正则表达式可以选择匹配 url 中的端口号



我有一个像http://(?<Servername>[^"]+):(?<Port>[^"]+)这样的正则表达式,可以从URL中选择服务器和端口。当 url 中存在端口时,这工作正常,但当端口号不存在时,它也与服务器不匹配。例如

Url -> http://Server1:20 
Values Returned ServerName = Server1 Port = 20
Url ->    http://Server2 
Values Returned ServerName = blank Port = blank

对于第二种情况,我想获取值 服务器名称 = 服务器2 端口 = 空白

您可以将正则表达式修改为

^http://(?<Servername>[^:]+)(:(?<Port>.+))?$

例 : http://regex101.com/r/sN8iT4/1

所做的更改

  • [^:]+匹配除:以外的任何内容。这部分与Servername

  • (:(?<Port>.+))?匹配任何后跟: 。这部分与Portnumber

    • ?量词,量化零个或一个端口号的出现
(?<=//)([^:]+):?(.*)

试试这个。抓住捕获。请参阅演示。

http://regex101.com/r/oE6jJ1/44

最新更新