Home > Enterprise >  Change several strings by complex rules in a simple way
Change several strings by complex rules in a simple way

Time:01-30

I,d like to change several strings in vector. In my case, I have in all.images object:

all.images <-c("S2A2A_20160615_124_AguaSumidaPR001120160629_BOA_10.tif",
"S2A2A_20160705_124_AguaSumidaPR0010120160629_BOA_10.tif",
"S2A2A_20160712_081_AguaSumidaPR001120160629_BOA_10.tif",
"S2A2A_20170501_124_AguaSumidaPR001120170427_BOA_10.tif",
"S2A2A_20170508_081_AguaSumidaPR001120170427_BOA_10.tif")

and I'd like in new object all.images.new the output:

all.images.new
"AguaSumida_PR001_1_2016-06-29_20160615_124",
"AguaSumida_PR001_10_2016-06-29_20160705_124",
"AguaSumida_PR001_1_2016-06-29_20160712_081",
"AguaSumida_PR001_1_2017-04-27_20170501_124",
"AguaSumida_PR001_1_2017-04-27_20170508_081"

Please, any help with it?

CodePudding user response:

Using sub to capture groups and replace with the backrefernce of the capture groups rearranged

sub("^\\w _(\\d )_(\\d )_([A-Za-z] )([A-Z]{2}\\d{3})(\\d)(\\d{4})(\\d{2})(\\d )_.*", 
     "\\3_\\4_\\5_\\6-\\7-\\8_\\1_\\2", all.images)

-output

[1] "AguaSumida_PR001_1_2016-06-29_20160615_124"
[2]"AguaSumida_PR001_0_1201-60-629_20160705_124" 
[3]"AguaSumida_PR001_1_2016-06-29_20160712_081" 
[4] "AguaSumida_PR001_1_2017-04-27_20170501_124"  
[5]"AguaSumida_PR001_1_2017-04-27_20170508_081" 
  •  Tags:  
  • Related