scala IPv6正则表达式匹配和组提取

时间:2018-05-15 20:19:18

标签: regex scala pattern-matching

我正在尝试匹配来自字符串的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] +)(。*)

但是我得到了组(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)

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

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

因此,跟随正则表达式会正确捕获组:

((?:[0-9A-F] {0,4}:)+ [0-9A-F] {0,4})+,((?:[0-9A-F] {0 ,4}:)+ [0-9A-F] {0,4})+,([A-ZA-Z0-9] +)(*)