我目前正在从事一个非盈利项目,需要重新格式化行中数据的显示方式。
此刻,行数据的外观如下:
Save The Children (Donation)|10.00{0}{2}
我需要它改为这样输出:
donation_id:save_children|quantity:1|total:10.00
第一个问题:有时该行中有多个项目:
Save The Children (Donation)|10.00{0}{2} / Save The Forrest|15.50{0}{2}
在这种情况下,需要用分号分隔
:donation_id:save_children|quantity:1|total:10.00;donation_id:save_forrest|quantity:1|total:15.50
第二个问题是,我们有9个捐赠变量/原因,每个变量都需要将输出转换为不同的“ donation_id”。
因此每次发现:
保存儿童,它需要转换为: donation_id:save_children
保存Forrest ,至 donation_id:save_forrest
保存动物到 donation_id:save_animals
依此类推。
第三个问题是,捐赠金额是可变的(随着人们捐赠他们想要的东西),因此我们输出的“总计:”美元价值通常会有所不同。
我将如何使用正则表达式进行操作?
谢谢
答案 0 :(得分:0)
您可以在正则表达式下面使用
(Save) The (Children|Forrest|Animals).*?\|([0-9]+\.[0-9]+)\{0\}\{2\}([\s\/]+)?
替换/替换为
donation_id:$1_$2|quantity:1|total:$3;
当我测试
Save The Children (Donation)|10.00{0}{2} / Save The Forrest|15.50{0}{2}
输出为
donation_id:Save_Children|quantity:1|total:10.00;donation_id:Save_Forrest|quantity:1|total:15.50;