正则表达式添加尾随零

时间:2012-07-04 02:57:42

标签: regex replace pentaho

我试图在转换数据时将零填充为一系列数字。

基本上我有类似的东西:

1234
2345
3456
4567

我想要转变的是

12340000
23450000
34560000
45670000

到目前为止我尝试过的是

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

如果有人可以帮助我,那会很棒。

4 个答案:

答案 0 :(得分:0)

这在Notepad ++中适用于我

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

我用$ 1 $ 20000尝试了它并且它不起作用:(

另一种有效的方法是以下

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

这也有用

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

答案 1 :(得分:0)

正则表达式(?<=^\d+)$和简单替换0000怎么样?这与现有数字不匹配,只是确保它们在行尾的零宽度匹配位置之前就存在。

答案 2 :(得分:0)

我觉得你应该使用打击垫功能,例如修改后的javascript步骤中的一个,而不是任何类型的正则表达式。

答案 3 :(得分:0)

如果您将这些字段作为数字,@ ghoti将它们乘以10000的解决方案听起来最好。 但是如果你把它们作为字符串我真的不知道你想要一个少于或多于4个字符串的字符串的行为。 “123”或“98765”(因为你没有在你的问题上定义它)。

1-如果你想把它变成“1230000”/“987650000”(只是concat 4零)那么你可以使用一个计算器步骤,创建一个临时常量字段“0000”而不是创建一个字段作为你的总和原始字段和此临时字段;

2-如果你想把它变成“12300000”/“98765000”(两个8个字符),你可以使用字符串操作步骤选择Padding = right,Pad char = 0和Pad Length = 9(不要问我为什么9而不是8)。

这两个步骤对于字符串操作非常有用,希望它们可以帮助你。