【问题标题】:Capture domain and url using reg-ex?使用 reg-ex 捕获域和 url?
【发布时间】:2017-08-08 12:10:11
【问题描述】:

我有以下字符串 -

1489713397.743 69 201.3.120.132 TCP_REFRESH_HIT/200 3013 GET http://www.google.com/manta/images/homepage/h_ftr-snapdata.gif pcallahan@google.com DIRECT/www.google.com - ALLOW_WBRS-DefaultGroup-Demo_Clients-NONE-NONE-DefaultRouting <IW_busi,6.5,-,-,-,-,-,-,-,-,-,-,-,-,-,IW_busi,-> - -

我想提取以下捕获组 - 用户、域和 url。

对于上述行,它应该返回以下内容 -

用户 = pcallahan@google.com

域 = http://www.google.com

URL = http://www.google.com/manta/images/homepage/h_ftr-snapdata.gif

【问题讨论】:

  • 你想要什么语言呢?
  • ^((?!-)[A-Za-z0-9-]{1,63}(?&lt;!-)\\.)+[A-Za-z]{2,6}$

标签: regex


【解决方案1】:

这是 javascript 中的正则表达式。使用组匹配所需要做的就是:

var str="1489713397.743 69 201.3.120.132 TCP_REFRESH_HIT/200 3013 GET http://www.google.com/manta/images/homepage/h_ftr-snapdata.gif pcallahan@google.com DIRECT/www.google.com - ALLOW_WBRS-DefaultGroup-Demo_Clients-NONE-NONE-DefaultRouting <IW_busi,6.5,-,-,-,-,-,-,-,-,-,-,-,-,-,IW_busi,-> - -";


var rgx= /(https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b)([-a-zA-Z0-9@:%_\+.~#?&//=]*)?/ig

var match = rgx.exec(str);

if (match){
console.log(match[0]); // the entire url
match[1] && console.log(match[1]); // onyl the domain

}

这是 javascript 中的正则表达式:

(https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b)([-a-zA-Z0-9@:%_\+.~#?&//=]*)/ig

下面是一个例子:

【讨论】:

    【解决方案2】:

    假设您使用的是 .NET,以下正则表达式应提取您要查找的 3 个组:

    (?<url>http://(?<domain>[^/]*)[^ ]*) (?<user>[^ ]*)
    

    但这只有在您的数据遵循我根据您提供的样本所做的假设时才有效。

    【讨论】:

      猜你喜欢
      • 2019-04-01
      • 1970-01-01
      • 2023-03-03
      • 2016-04-06
      • 1970-01-01
      • 2011-11-16
      • 2010-12-24
      • 1970-01-01
      • 2014-02-24
      相关资源
      最近更新 更多