如果之前没有字母,则在数字上正则表达式

时间:2011-08-22 12:17:27

标签: regex

我需要一个正则表达式,只有在没有字母的情况下才能获得数字。

DoThis(0.5) // = 0.5 should be selected
DoThis5(43) // = 43 should be selected, but not 5

我设法写了这个/[0-9.]+\b/g,但它会从DoThis5()中选择'5'。这就是我不想要的。

5 个答案:

答案 0 :(得分:2)

如果您有\b运算符,为什么不执行\b[0-9.]+(加号是贪婪的,所以会吃掉它找到的所有数字)。

编辑:使用更严格的十进制数的正则表达式,零点或一点,至少有一个数字;

\b[0-9]+(\.[0-9]+)?

这目前不允许10.和.5。它需要一个正则表达式引擎,它支持用于分组的括号和可选部分的问号。 (某些旧版本的sed和例如Emacs要求您反斜杠括号和问号。)

答案 1 :(得分:1)

使用负面的lookbehind ig你正在使用的正则表达式引擎支持它:

(?<!\w)[0-9.]+\b

答案 2 :(得分:0)

怎么样:

/\([0-9.]+\)/

这将匹配()

之间的数字

答案 3 :(得分:0)

如果你不能使用负面看,这将有效:

/\([0-9.]+\)/


echo "DoThis5(43)" | egrep -o "\([0-9.]+\)"                                                                                
(43)

答案 4 :(得分:0)

试试这个:

/[^\w]([\d\.]+)/

解释

[^\w]每个不是单词字符的字符(如[^a-zA-Z]

[\d\.]每个数字(如[0-9])和点字符(转义)