2012-07-04 98 views
4

我試圖在零數據轉換中填充一系列數字。正則表達式添加尾隨零

基本上,我有這樣的事情:

1234 
2345 
3456 
4567 

而且我想改變的就是

12340000 
23450000 
34560000 
45670000 

我已經試過到目前爲止

regex: ^(.+)$ 
replace: $1/0000 => 1234/0000 
replace: $10000 => NOTHING 
replace: $1\0000 => 1234\0000 

將是巨大的如果有人能幫助我。

+1

什麼是語言/引擎? –

+0

我正在使用轉換工具調用Pentaho,它使用我相信Java正則表達式標準。 – Churk

+2

正則表達式替換真的比單純乘以10000更容易嗎?另外...... Pentaho? [他們wiki上的Hello World示例頁面](http://wiki.pentaho.com/display/EAI/03.+Hello+World+Example)談到「第一次轉換的目標」。我不能成爲唯一一個害怕這種語言的人。 – ghoti

回答

0

如果你有這些字段作爲數字,@ ghoti乘以10000的解決方案聽起來是最好的。 但是,如果你有他們作爲字符串,我真的不知道什麼樣的行爲,你想要一個字符串少於或超過4個字符前。 「123」或「98765」(因爲你沒有在你的問題上定義它)。

1-如果你想把它變成「1230000」/「987650000」(只是concat 4個零),那麼你可以使用Calculator步驟創建一個臨時常量字段「0000」,而不是創建一個字段你原來的領域和這個臨時領域;如果你想把它變成「12300000」/「98765000」(都是8個字符),那麼你可以使用字符串操作步驟,選擇Padding = right,Pad char = 0和Pad Length = 9(don'不問問爲什麼9而不是8)。

這兩個步驟對字符串操作來說都非常有用,希望它們能幫助你。

+0

我沒有在這裏找到任何解決方案作爲一個很好的解決方案,因爲他們都是有點hack'ish方法如何做一個正則表達式搜索和替換,並且因爲如何正則表達式替換字符串是公式化,這是不可能的真正用正則表達式來完成它。因此,我認爲你的10000以上的解決方案最終是最簡單的工作,所以我接受這個答案作爲解決方法。 – Churk

0

這爲我在記事本++

regex: ^(.+)$ 
replace: \1\20000 

我用$ 1 $ 20000嘗試過了,它沒有工作:(

奏效的另一種方法是在下列

regex: ^(.+)$ 
replace: $1z0000 
regex: ^(.+)z(0000)$ 
replace: $1$2 

這個工作太

regex: ^(.+)$ 
replace: $1(0000) 
+0

我也嘗試過替換'$ 1(0000)',並且返回給我'1234(0000)',轉換工具只允許我進行單遍轉換,所以我需要以某種方式第一次正確地做到這一點。 – Churk

0

如何使用正則表達式(?<=^\d+)$和簡單替換0000?這不符合現有的數字,它只是確保它們在行尾的零寬度匹配位置之前。

+0

如果您沒有匹配,則無法替換。我測試了你的例子。它找不到任何東西,因此替換從未發生過。 – Churk

0

對我來說,你應該使用墊功能,例如其中一個在修改的javascript步驟中,而不是任何類型的正則表達式。