【问题标题】:scala IPv6 regex matching and group extractionscala IPv6 正则表达式匹配和组提取
【发布时间】:2018-10-25 18:45:35
【问题描述】:

我正在尝试从如下字符串匹配 ipv6 正则表达式:

3111105 fe88::777:2333:e89:12f3,ff42::9,tcp/0/0

我想提取其中的两个 IPv6 地址。

我的正则表达式如下:

(([a-f0-9]{0,4}:)+[a-f0-9]{1,4}),(([a-f0-9]{0,4}:) +[a-f0-9]{1,4}),([a-zA-Z0-9]+)(.*)

但是我得到了 group(1) 中第一个 ip 的一部分和第 4 组中第二个 ip 的一部分。

这是我得到的:

组(0)-(fe88::777:2333:e89:12f3)

组(1)-(e89:)

组(2)-(ff42::9)

组(3)- (:)

组(4)-(tcp)

组(5)-(/0/0)

但预期是:

组(0)-(fe88::777:2333:e89:12f3)

组(1)-(ff42::9)

组(2)-(tcp)

组(3)-(/0/0)

有什么建议吗?

【问题讨论】:

    标签: regex scala pattern-matching


    【解决方案1】:

    可选字符上缺少正则表达式,第一部分是“:”。

    因此以下正则表达式将正确捕获组:

    ((?:[0-9a-f]{0,4}:)+[0-9a-f]{0,4})+,((?:[0-9a-f]{0 ,4}:)+[0-9a-f]{0,4})+,([a-zA-Z0-9]+)(.*)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-02
      • 2012-11-23
      • 1970-01-01
      • 2011-01-12
      • 1970-01-01
      • 2017-10-10
      相关资源
      最近更新 更多