我有一个像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