我们试图用String中的浮点值替换整数值,例如:
#var1 * #var2/ 1+100 - 2 + 1.5 - .5
正则表达式应与1
,100
和2
匹配,但不应与已浮动的数字匹配,例如1.5
和.5
我已经到了/[^\w](\d+)/
,它自己找到数字。
现在,如何从此正则表达式中排除数字,后跟\.?\d+
?
RegEx应该使用Java或Actionscript 3。
答案 0 :(得分:2)
这适用于Java:/(?<![.\w])\d+(?![.\w])/
。它使用lookahead和lookbehind来停止匹配数字,这些数字在点/字母之前或之后。
答案 1 :(得分:1)
为什么没有尝试前瞻?我相信它适用于Java,没有关于ActionScript的线索。
[^\w](\d+)(?![.]\d+)/
只匹配那些数字序列,而不是紧跟一个点整数。
答案 2 :(得分:1)
您可以在此
中使用n egative look ahead(?<!\.\d+)
会排除这一点,但你需要将它与一个锚点结合起来,否则你将得到一个奇异的比赛。
/(?<!\B|\.)(\d+)(?!\.\d+)\b/
您还应该在数字前更改非单词字符。我在这里使用了一个负面的lookbehind断言(?<!\B|\.)
。它确保在数字之前没有点或不是非字边界(在字边界上匹配的双重否定。)
答案 3 :(得分:0)
如果你的正则表达式语法支持超前,你可以使用它。 Java确实;不确定AS3。
/[^\w.]\d+(?!\.)/
请注意,在这种情况下,您需要在替换中使用整个匹配的字符串。
答案 4 :(得分:0)
我的建议是
\b(?<!\.)\d+(?!\.)\b