Perl正则表达式 - 指数值

时间:2011-05-10 21:11:19

标签: regex perl match exponential

匹配十进制数来检查它是否包含指数值有什么好的正则表达式?

感谢您的帮助。

除了包含“e-”,“e +”,“E-”或“E +”之外,我能说出匹配任何内容吗?

3 个答案:

答案 0 :(得分:1)

这不是最短的解决方案,但要检查整数的正确性......

if( $num =~ /^[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?$/ ) {
    #correct floating point
    if( $num =~ /e/i ) {
        #exponential
    } else {
        #not exponential
    }
}

答案 1 :(得分:0)

虽然我并不完全清楚您要查找的是什么,但您可能需要查看CPAN提供的Regexp::Common module,特别是Regexp::Common::number。它可能会提供你想要的东西。

答案 2 :(得分:0)

  

事情是它的成本领域,并且可以   包含货币符号,括号   和其他像这样的人物

如果没有详细的规格,使用正则表达式并不是一件容易的事。在我看来,当你对输入的格式知之甚少时,正则表达式是不合适的。


OP编辑后更新:

  

我可以说匹配的东西   除了包含“e-”之外的任何东西,   “e +”,“E-”或“E +”?

那将是例如^(?!.*[eE][+-]).*$(使用negative lookahead),但可能比您更喜欢匹配...