1

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

#var1 * #var2/ 1+100 - 2 + 1.5 - .5

正则表达式应该匹配1,1002,但不是已经是浮点数的数字,例如1.5.5

我已经到了/[^\w](\d+)/,它自己找到数字。现在,如何从这个正则表达式中排除数字,然后是\.?\d+

RegEx 应该在 Java 或 Actionscript 3 中工作。

正则表达式测试

4

5 回答 5

2

这将在 Java 中工作:/(?<![.\w])\d+(?![.\w])/. 它使用前瞻和后瞻来停止匹配在点/字母之前或之后的数字。

于 2012-04-20T10:34:43.923 回答
1

为什么不尝试前瞻?我相信它适用于 Java,对 ActionScript 毫无头绪。

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

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

于 2012-04-20T10:31:41.677 回答
1

您可以对此使用消极的展望

(?<!\.\d+)

会排除这个,但你需要把它和一个锚结合起来,否则你会得到一个部分匹配。

/(?<!\B|\.)(\d+)(?!\.\d+)\b/

您还应该更改数字之前的非单词字符。我在这里使用了否定的lookbehind assertion (?<!\B|\.)。它确保数字之前没有点或没有非字边界(双重否定以匹配字边界。)

在 Regexr 上查看

于 2012-04-20T10:33:23.757 回答
0

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

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

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

于 2012-04-20T10:38:26.173 回答
0

我的建议是

\b(?<!\.)\d+(?!\.)\b
于 2012-04-20T11:51:41.930 回答