Java中nonProxyHosts属性的有效正则表达式格式是什么?

Java中nonProxyHosts属性的有效正则表达式格式是什么?,java,regex,proxy,Java,Regex,Proxy,在Java中使用proxyHost、proxyPort和nonProxyHosts属性修改URL连接时,nonProxyHosts属性中通配符的有效用途是什么?我可以做以下任何或所有操作吗 显式服务器名称:nonProxyHosts=server.company.com 子域中的任何服务器:nonProxyHosts=*.local.company.com 按IP地址列出的特定服务器:nonProxyHosts=192.168.101.110 子网中的任何服务器:nonProxyHosts=19

在Java中使用
proxyHost
proxyPort
nonProxyHosts
属性修改
URL
连接时,
nonProxyHosts
属性中通配符的有效用途是什么?我可以做以下任何或所有操作吗

  • 显式服务器名称:
    nonProxyHosts=server.company.com
  • 子域中的任何服务器:
    nonProxyHosts=*.local.company.com
  • 按IP地址列出的特定服务器:
    nonProxyHosts=192.168.101.110
  • 子网中的任何服务器:
    nonProxyHosts=192.168.101.*
  • 子网中的任何服务器:
    nonProxyHosts=192.168.101/23
  • 还有其他类型的模式吗

    谢谢

    说:

    http.nonProxyHosts表示应该直接连接而不是直接连接的主机 通过代理服务器。该值可以是主机列表,每个主机用|和分隔 此外,可以使用通配符(*)进行匹配。例如:

    -Dhttp.nonProxyHosts=“*.foo.com | localhost”


    我认为属性值的解释是它定义了一个正则表达式池。如果主机匹配池中的任何表达式(主机和表达式都强制使用小写),则不使用代理

    编辑:
    或者不完全是。它看起来像
    sun.misc.RegexpPool
    只处理以“*”开头或结尾的字符串。所以我想这确实可以归结为前缀和后缀通配符

    编辑2:
    测试的快速方法是使用:

    ProxySelector.getDefault().select(URI.create("...myURI..."));
    

    它将返回
    列表
    。默认代理选择器是
    sun.net.spi.DefaultProxySelector
    ,但它可以被覆盖。

    请查看OpenJDK源代码中的
    sun.net.spi.DefaultProxySelector
    sun.misc.Regexp
    类。sunjvm的
    nonProxyHosts
    系统属性在那里得到处理。根据
    @author
    javadoc评论,Regexp类是由Java人James Gosling自己编写的。它所做的只是匹配
    *
    正则表达式,字符串中的任意位置(开始、中间和结束)。因此,您可以使用部分主机名和部分IP地址,例如
    host12*
    10.*
    来匹配以
    host12
    开头的所有主机名或以
    10开头的所有IP。
    。另外,
    DefaultProxySelector
    在代理URL中检测
    localhost
    127.0.0.1
    ,并自动排除它们。因此,就Sun JVM而言,您不需要将它们添加到
    非ProxyHosts

    现在,在Weblogic中,它们似乎有自己的
    Weblogic.net
    类,这些类使用相同的Sun System net属性运行,但并不总是以相同的方式运行。我手头没有Weblogic源代码,但我的观点是,使用这些属性的不仅仅是Sun JDK。由于错误、语义或Sun行为和文档的不同解释,YMMV具有不同的代理实现


    我引用的OpenJDK源代码版本来自于的OpenJDK-6。

    谢谢,但这正是我想要得到的定义。我可以在IP地址中使用通配符吗?我可以使用CIDR符号吗?谢谢我解释为CIDR是不可能的,但是您可以在IP(当IP请求某些内容时)和主机名(当主机名请求某些内容时)中使用通配符。代码解析很棒。这基本上回答了这个问题,也回答了我的好奇心。快捷方式(Edit2)就像一种魅力。您刚刚测试了返回到列表中的代理类型。我认为“正则表达式”是指“通配符”?这些例子在我看来一点都不像。