Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
查找数字并添加和操作字符(java、knime)_Java_Regex_String_Replace_Knime - Fatal编程技术网

查找数字并添加和操作字符(java、knime)

查找数字并添加和操作字符(java、knime),java,regex,string,replace,knime,Java,Regex,String,Replace,Knime,我正在使用字符串替换节点处理knime,必须在数字后面(字符串单元格内)添加一个数学运算符号(乘法“*”)。我使用(基于java的)正则表达式查找数字 ((?:\d+\.)?\d+ ) 我试图通过添加替换文本来添加乘法运算 ((?:\d+\.)?\d+)\* 但现在,这种替代产生了如下结果: 待替换: 1.456 substance 实际替换为: ((?:\d+\.)?\d+)\*substance 但需要的是: 1.456*substance 如何修改替换文本以获得所需的输出,或者正

我正在使用字符串替换节点处理knime,必须在数字后面(字符串单元格内)添加一个数学运算符号(乘法“*”)。我使用(基于java的)正则表达式查找数字

((?:\d+\.)?\d+ )
我试图通过添加替换文本来添加乘法运算

((?:\d+\.)?\d+)\*
但现在,这种替代产生了如下结果:

待替换:

1.456 substance
实际替换为:

((?:\d+\.)?\d+)\*substance
但需要的是:

1.456*substance
如何修改替换文本以获得所需的输出,或者正确的方法是什么

谢谢。

请注意,搜索文本时使用的是正则表达式模式,替换时需要替换字符串。替换字符串不能包含模式,但可以包含对捕获组(编号或命名组)的反向引用

在Java中,反向引用是用
$
+
number
符号来引用的

因此,使用
((?:\d+\)?\d+\s
regex和
$1*
替换字符串,您可以获得所需的:
1.456*物质

看看你的


注意,为了匹配浮点值,您可以考虑使用<代码>(\D+(?:\\D+)?)\ < /C>或<代码>(\d*\.d+)\s>代码>正则表达式。有关匹配各种浮点数的复杂模式,请参见regular expressions.info.

我想您是想在替换文本中使用反向引用
$1
。类似于
$1*物质
?@Jongware:没有实际的代码。它是knime中的字符串替换节点,用于后台的java代码。(对不起,我真的是新手)。将其与查找和替换进行比较,例如在记事本中。@Rockbar为什么不
(\d*\.\d*)
?您可以检查样本@kucing:I使用替换的
$&*
获得了一个“非法组引用”,我正在寻找“反向引用”。您的代码正是解决方案。非常感谢你!