我有一个像http:\/\/(?<Servername>[^"]+):(?<Port>[^"]+)
这样的正则表达式从网址中选择服务器和端口。当端口存在于url中时,这可以正常工作,但是当端口号不存在时,它也与服务器不匹配。
例如,
Url -> http://Server1:20
Values Returned ServerName = Server1 Port = 20
Url -> http://Server2
Values Returned ServerName = blank Port = blank
对于第二种情况,我想得到值ServerName = Server2 Port = blank
答案 0 :(得分:1)
您可以将正则表达式修改为
^http:\/\/(?<Servername>[^:]+)(:(?<Port>.+))?$
示例:http://regex101.com/r/sN8iT4/1
所做的更改
[^:]+
匹配:
以外的任何内容。此部分与Servername
(:(?<Port>.+))?
匹配:
后跟的所有内容。此部分与Portnumber
?
量词,量化零或一个出现的Portnumber 答案 1 :(得分:0)