【发布时间】:2010-12-20 15:18:10
【问题描述】:
所以我需要匹配一个可能有也可能没有掩码的 ipv6 地址。不幸的是,我不能只使用库来解析字符串。
掩码位很简单,在这种情况下:
(?:\/\d{1,3})?$/
难点在于 ipv6 地址的不同格式。它需要匹配::beef、beef::、beef::beef等。
更新:我快到了..
/^(\:\:([a-f0-9]{1,4}\:){0,6}?[a-f0-9]{0,4}|[a-f0-9]{1,4}(\:[a-f0-9]{1,4}){0,6}?\:\:|[a-f0-9]{1,4}(\:[a-f0-9]{1,4}){1,6}?\:\:([a-f0-9]{1,4}\:){1,6}?[a-f0-9]{1,4})(\/\d{1,3})?$/i
在这种情况下,我仅限于使用 perl 的正则表达式。
【问题讨论】:
-
我使用的语言是 perl。允许使用其他库所需的更改将是更多的工作。定义作业?我在家,我在工作。这是我正在从事的项目之一 - 如果您的意思是出于教育目的,那么没有。
-
“允许使用其他库所需的更改将是更多工作。” - 我对此表示怀疑。至少从长远来看不会。一般来说,不使用 CPAN 模块的 Perl 只是语言的一半。甚至拒绝使用简单的纯 Perl 模块,然后向其他人寻求以前解决的问题的解决方案似乎......效率低下。
-
有什么变化?要么是
use SomeModule,要么你去CPAN,下载模块并复制粘贴。 -
确实如此。只是有些方法比其他方法好很多。
-
理想情况下,这些方式不应包括要求他人重做已经完成的工作。如果您想找到另一种方法,那就发疯,但您现在也要求我们参与其中。