Java 用浮点数替换整数的正则表达式

Java 用浮点数替换整数的正则表达式,java,regex,actionscript-3,Java,Regex,Actionscript 3,我们试图用字符串中的浮点值替换整数值,例如: #var1 * #var2/ 1+100 - 2 + 1.5 - .5 正则表达式应该匹配1、100和2,但不能匹配已经是浮点数的数字,例如1.5和.5 我得到了/[^\w]\d+/,它可以自己找到数字。 现在,如何从正则表达式中排除后跟\.?\d+的数字 正则表达式应该在Java或ActionScript3中工作 为什么不试着向前看?我相信它可以与Java一起工作,对ActionScript一无所知 [^\w]\d+?![.]\d+/ 将只匹配那

我们试图用字符串中的浮点值替换整数值,例如:

#var1 * #var2/ 1+100 - 2 + 1.5 - .5
正则表达式应该匹配1、100和2,但不能匹配已经是浮点数的数字,例如1.5和.5

我得到了/[^\w]\d+/,它可以自己找到数字。 现在,如何从正则表达式中排除后跟\.?\d+的数字

正则表达式应该在Java或ActionScript3中工作


为什么不试着向前看?我相信它可以与Java一起工作,对ActionScript一无所知

[^\w]\d+?![.]\d+/


将只匹配那些没有紧跟着一个点整数的数字序列。

为什么不尝试向前看?我相信它可以与Java一起工作,对ActionScript一无所知

[^\w]\d+?![.]\d+/

将只匹配那些不紧跟点整数的数字序列。

您可以使用n来表示

将排除这一点,但您需要将其与锚点相结合,否则您将得到一个对等匹配

/(?<!\B|\.)(\d+)(?!\.\d+)\b/
您还应该更改数字前的非单词字符。我在这里使用了一个否定的lookback断言?。它确保数字前没有点,或者在单词边界上没有要匹配的非单词边界双重否定

看到了吗

你可以用n来表示

将排除这一点,但您需要将其与锚点相结合,否则您将得到一个对等匹配

/(?<!\B|\.)(\d+)(?!\.\d+)\b/
您还应该更改数字前的非单词字符。我在这里使用了一个否定的lookback断言?。它确保数字前没有点,或者在单词边界上没有要匹配的非单词边界双重否定


请参见

这将在Java中工作:/?。它同时使用lookahead和lookahead来停止匹配前面或后面有点/字母的数字。

这在Java:/?。它同时使用lookahead和lookahead来停止匹配前面或后面有点/字母的数字。

如果您的正则表达式语法支持lookahead,您可以使用它。Java有;不确定AS3

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

请注意,在这种情况下,您希望在替换中使用整个匹配的字符串。

如果您的正则表达式语法支持前瞻,您可以使用它。Java有;不确定AS3

/[^\w.]\d+(?!\.)/
请注意,在这种情况下,您希望在替换中使用整个匹配的字符串。

我的建议是

\b(?<!\.)\d+(?!\.)\b
我的建议是

\b(?<!\.)\d+(?!\.)\b

谢谢你的回答。使用?现在,这是@Marko Topolnik的答案,添加了一个用于替换数字的捕获组。感谢您的回答。使用?现在,这是@Marko Topolnik的答案,为要替换的数字添加了一个捕获组。