我们正在尝试用字符串中的浮点值替换整数值,例如:
#var1 * #var2/ 1+100 - 2 + 1.5 - .5
正则表达式应该匹配1
,100
和2
,但不是已经是浮点数的数字,例如1.5
和.5
我已经到了/[^\w](\d+)/
,它自己找到数字。现在,如何从这个正则表达式中排除数字,然后是\.?\d+
?
RegEx 应该在 Java 或 Actionscript 3 中工作。
我们正在尝试用字符串中的浮点值替换整数值,例如:
#var1 * #var2/ 1+100 - 2 + 1.5 - .5
正则表达式应该匹配1
,100
和2
,但不是已经是浮点数的数字,例如1.5
和.5
我已经到了/[^\w](\d+)/
,它自己找到数字。现在,如何从这个正则表达式中排除数字,然后是\.?\d+
?
RegEx 应该在 Java 或 Actionscript 3 中工作。
这将在 Java 中工作:/(?<![.\w])\d+(?![.\w])/
. 它使用前瞻和后瞻来停止匹配在点/字母之前或之后的数字。
为什么不尝试前瞻?我相信它适用于 Java,对 ActionScript 毫无头绪。
[^\w](\d+)(?![.]\d+)/
将仅匹配那些不紧跟点整数的数字序列。
您可以对此使用消极的展望
(?<!\.\d+)
会排除这个,但你需要把它和一个锚结合起来,否则你会得到一个部分匹配。
/(?<!\B|\.)(\d+)(?!\.\d+)\b/
您还应该更改数字之前的非单词字符。我在这里使用了否定的lookbehind assertion (?<!\B|\.)
。它确保数字之前没有点或没有非字边界(双重否定以匹配字边界。)
如果您的正则表达式语法支持前瞻,您可以使用它。Java可以;不确定AS3。
/[^\w.]\d+(?!\.)/
请注意,在这种情况下,您希望在替换中使用整个匹配的字符串。
我的建议是
\b(?<!\.)\d+(?!\.)\b