2015-10-13 67 views
1

我正在使用字符串替換節點來編寫knime,並且必須在數字數字後面(字符串單元格內)添加數學運算符號(乘法,'*') 。我找到了(基於Java的)正則表達式的數字查找編號並添加和操作字符(java,knime)

((?:\d+\.)?\d+) 

我試圖通過將替換文本添加乘法運算

((?:\d+\.)?\d+)\* 

但更換現在創建類似:

待更換:

1.456 substance 

實際上替換爲:

((?:\d+\.)?\d+)\*substance 

但需要的是:

1.456*substance 

如何修改替換文本,以獲得所需的輸出或什麼是正確的做法?

謝謝。

+0

我想你打算在替換文本中使用反向引用'$ 1'。像'$ 1 *物質'一樣? –

+0

@Jongware:沒有實際的代碼。它是knime中的一個字符串替換節點,它在後臺爲java代碼提供服務。 (對不起,我真的是新手)。將它與查找和替換進行比較在記事本內。 – Rockbar

+0

@Rockbar爲什麼不是'(\ d * \。\ d *)'?你可以檢查樣本http://www.regexr.com/3bvkf –

回答

2

注意,當你搜索文本,您使用的是正則表達式模式和更換時,你需要一個替換字符串。替換字符串不能包含模式,但可以包含對捕獲組(編號或名稱)的反向引用。

在Java中,反向引用參照$ + number表示法。

所以,使用((?:\d+\.)?\d+)\s正則表達式,和一個$1*替換字符串,你可以得到你需要的:1.456*substance

查看你的updated regex demo

請注意,要匹配浮點值,可以考慮使用(\d+(?:\.\d+)?)\s(\d*\.?\d+)\s正則表達式模式。對於複雜模式來匹配各種浮點數,請參見Matching Floating Point Numbers with a Regular Expression regular-expressions.info。

+1

「返回參考」是我正在尋找。你的代碼就是解決方案。非常感謝你! – Rockbar