【问题标题】:split hostname and domain name from fqdn using regex使用正则表达式从 fqdn 中拆分主机名和域名
【发布时间】:2017-09-17 06:10:51
【问题描述】:

我正在研究正则表达式。即 java.google.com 这里的“java”是主机名,“google.com”是域名。现在我想从

中提取
String fqdn = "java.google.com";

String hostname = "java";
String domain = "google.com";

使用正则表达式。

我试过这样

String text = "java.google.com";
String extensionRemoved = text.split("\\.")[0];

我得到的结果是java。但我想要一些正则表达式,它应该给我“java”单独的字符串和“google.com”单独的字符串。

我可以使用 StringTokenizer,但我不想使用 StringTokenizer,因为它会影响性能如果我有 1000,1,00,000 条来自 db 的记录。感谢任何人为此提供有效的解决方案。

【问题讨论】:

    标签: java regex


    【解决方案1】:

    试试这个:

    String text = "java.google.com";
    String domain = text.split("\\.")[0];
    String ext = text.replace(domain, "");
    System.out.print("Domain:"+domain);
    System.out.print("\n");
    System.out.print("Ext:"+ext);
    

    【讨论】:

      【解决方案2】:

      注意String.split 有一个变体,允许您指定最大拆分数:

      String[] x = "java.sun.com".split("\\.", 2);
      System.out.println(x[0]); // java
      System.out.println(x[1]); // sun.com
      

      【讨论】:

        【解决方案3】:

        对于这种简单的解析,indexOfsubstring会更高效。

        编辑 但是,如果你真的想要一个正则表达式,那么这个是基本的,但要做到这一点ˋ(\w+).([.\w]+)ˋ ˋgroup(1)contains the hostname and ˋgroup(2) 域。但有些边缘情况可能不匹配。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-11-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-07-18
          相关资源
          最近更新 更多