我需要一个正则表达式,只有在没有字母的情况下才能获得数字。
DoThis(0.5) // = 0.5 should be selected
DoThis5(43) // = 43 should be selected, but not 5
我设法写了这个/[0-9.]+\b/g
,但它会从DoThis5()
中选择'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]
)和点字符(转义)