首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
拉钩
V2EX  ›  Java

咨询 Java 正则提取

  •  
  •   yanhj2006 · 59 天前 · 940 次点击
    这是一个创建于 59 天前的主题,其中的信息可能已经有所发展或是发生改变。

    有类似域名,s1.a1.apple.com.abc.coms1.a1.apple.com 想提取s1.a1.apple.com,即从前开始优先匹配的正常域名,尝试这样 java 中用正则 ([\w\-]*\.?)+\.(com|cn|net|org)

     while (matcher.find())
       matcher.group
    

    一直提取是是全域名,求正确的正则

    10 回复  |  直到 2018-10-15 13:47:44 +08:00
        1
    xuhaoyangx   59 天前
    你是不是用错了。
        2
    anyele   59 天前 via Android
    @xuhaoyangx 这是什么字体
        3
    onexpiece   59 天前
    (?:\.?[\w\-]*)+?\.(?:com|cn|net|org)
        4
    yanhj2006   59 天前
    @onexpiece 关键是?的非贪心模式,谢谢
        5
    xuhaoyangx   59 天前
    @anyele #2 mac os 自带
        6
    970749518nkq   59 天前 via Android
    @anyele Monaco
        7
    Droi   59 天前
    用 perl 写的,不知道 java 有用不
    $var = "s1.a1.apple.com.abc.com";

    $var =~ m/((?>[\w.]+(?>(com|net|org|cn)(?=[\.\\])))|([\w.]+(com|net|cn|org)))/;

    print "$1";
        8
    tamer   59 天前
    [\\w\\-]
    这\w 后的\-是个什么意思?...没见过这种语法呢, 有没老哥给解个惑
        9
    Droi   59 天前
    重新改了下
    $var =~ m/(([\w.]+(?>\.(com|net|org|cn)(?=[\.\/])))|([\w.]+\.(com|net|cn|org)))/;
    但是无法匹配 s1.a1com.org.aaa.net.bb.coms1.a1com.org
        10
    thinkmore   56 天前
    @tamer 我的理解是这样的,-这个字符放在中间应该是区间的意思,但是指向表明这一个字符,所以用了转义吧。
    或者这样写就好理解了[-\\w]
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   3630 人在线   最高记录 4019   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.1 · 21ms · UTC 06:43 · PVG 14:43 · LAX 22:43 · JFK 01:43
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1