正则表达式IPv6验证和可选的方括号?
问题描述:
大家好所有正则表达式新手在这里。,正则表达式IPv6验证和可选的方括号?
我想写一个验证IPv6地址的正则表达式。我还没有添加端口部分,我想先获取地址部分。
这是我到目前为止有:
\\[?(?:[:0-9A-Fa-f]+)\\]?
这使得开启和关闭支架可选。但正如你所看到的,他们是独立的可选项。是否有正则表达式要求开放和结束括号或既不?
答
正则表达式是一个很好的字符串模式匹配工具,但是您在这里遇到了一个弱点。匹配成对的括号会变得棘手。
在更复杂的情况 - 即试图读取程序代码时 - 该解决方案是不使用正则表达式可言,而是利用正确的代码分析器。
即使是相当简单的情况下,可能会非常棘手回答,因为涉及的正则表达式语法,可以说是相当毛茸茸的,还因为更先进的正则表达式的功能就是这样,不同的实现可以使用不同的语法。 This question可能会提供一些提示,说明如何使用它以及可能使用的不同语法。
然而,在你的情况下,这个问题是不是太复杂了,一个相当简单的解决方案提出了自己:只要有需要两个支架或支架都不整个表达式整个表达式匹配。换句话说,重复你表达的主要部分两次,一次用支架,一次不带,并为他们之间or
管道:
\(\[(?:[:0-9A-Fa-f]+)\])|(?:[:0-9A-Fa-f]+)\
希望有所帮助。
经过一番调查后,我得出了同样的结论,我只需要复制那部分正则表达式。谢谢你的协助! – 2012-04-16 20:45:06