我正在使用字符串替换节点处理 knime,并且必须在数字后面(在字符串单元格内)添加数学运算符号(乘法,“*”)。我用(基于java的)正则表达式找到数字
((?:\d+\.)?\d+ )
我尝试通过添加替换文本来添加乘法运算
((?:\d+\.)?\d+)\*
但是替换现在会创建类似以下内容的内容:
要替换的:
1.456 substance
实际替换为:
((?:\d+\.)?\d+)\*substance
但需要的是:
1.456*substance
如何修改替换文本以获得所需的输出或者正确的方法是什么?
谢谢。
最佳答案
请注意,当您搜索文本时,您使用的是正则表达式模式,而在替换时,您需要替换字符串 。替换字符串不能包含模式,但可以包含对捕获组(编号或命名组)的反向引用。
在 Java 中,反向引用使用 $
+number
表示法进行引用。
因此,使用 ((?:\d+\.)?\d+)\s
正则表达式和 $1*
替换字符串,您可以获得所需的内容:1.456*物质
。
查看您的 updated regex demo 。
请注意,要匹配浮点值,您可以考虑使用 (\d+(?:\.\d+)?)\s
或 (\d*\.?\d+)\s
正则表达式模式。有关匹配各种 float 的复杂模式,请参阅regular-expressions.info 中的Matching Floating Point Numbers with a Regular Expression。
关于java - 查找数字并添加和操作字符(java,knime),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33099005/