我不得不将一个字符串分成他的数字。
例如,字符串看起来像:
VAR_1123 Var_G -12.34 VAR-14.34 12.4 12 -234
我想要的结果:
-12.34,
12.4
12
-234
我试试这个正则表达式:
([\-]?[0-9]+[\.[0-9]+]?)
但结果还包括1123和-14.34。
如何排除所有具有下划线或字符bevor的数字?
对于测试我使用此链接:
http://derekslager.com/blog/posts/2007/09/a-better-dotnet-regular-expression-tester.ashx
答案 0 :(得分:2)
你在这里: - )
(?<=\A|\s)-?[\d.]+\b
答案 1 :(得分:1)
\s\-*\d\S*\d
前缀空格,可能为负数,以边界之间可能的字符为界。工作,但显然可以改进以涵盖更多案件。
答案 2 :(得分:0)
?:
表示非捕获匹配。[\-]
改为-
。所以最后的正则表达式如下所示:
(?<=\s|^)-?[0-9]+(?:\.[0-9]+)?(?=\s|$)
查看在线工作:ideone
答案 3 :(得分:0)
您需要的唯一额外标准是数字应该在它们之前有空格,所以这应该有效 -
\s[\-]?[0-9]+[\.[0-9]+]?
我刚在正则表达式之前添加了\s
。它可以按照你想要的例子工作。
答案 4 :(得分:0)
使用此模式
([$\s][\-]?[0-9]+[\.[0-9]+]?)
编辑 - 更改parantheses以便不会捕获\。
[$\s]([\-]?[0-9]+[\.[0-9]+]?)