2017-02-19 77 views
0

我有这个数据包含电视剧数据GSUB替换最后一个字符串的长度不明的最后空间

"!Next?" (1994)      1994-1995 
"#1 Single" (2006)     2006-???? 
"#1 Single" (2006) {Cats and Dogs (#1.4)}  2006 
"#1 Single" (2006) {Finishing a Chapter (#1.5)}  2006 
"#1 Single" (2006) {Is the Grass Greener? (#1.1)} 2006 
"1941" (2009) {(#1.9)}     ???? 
"1942" (2011)      2011-???? 

我需要把这个分成系列名称|生产日期|插曲名称|发行年份

该剧集的名称不均匀(它可能存在也可能不存在),如上面关于1942(最后一条记录)的情况所见。因此我将从最后一个字符开始计算字符。

目前,我已完成name| production date|,但在发布年份之前添加pipe(|)有点繁琐。

我想这样

"!Next?" |1994|      |1994-1995 
"#1 Single" |2006|     |2006-???? 
"#1 Single" |2006| {Cats and Dogs (#1.4)}  |2006 
"#1 Single" |2006| {Finishing a Chapter (#1.5)}  |2006 
"#1 Single" |2006| {Is the Grass Greener? (#1.1)} |2006 
"1941" |2009| {(#1.9)}     |???? 
"1942" |2011|      |2011-???? 

输出我已经使用了分第2管,但没能获得第三之一。 请,如果有人可以帮助

+1

根据你在这里分享的数据,你可以简单地用'} |'gsub'}'并且它应该在集合名称后放置一个管道......并且如果没有集合名称,那么on生产日期将作为它与空气日期之间的分隔线。 – sconfluentus

+0

@bethanyP但事情是所有记录没有在数据中有一个'}'...这就是问题......因此我想从最后一个字符开始......例如最后一个记录..如果你能帮助我在最后一个字符的帮助下创建一个正则表达式,例如使用'$' –

回答

1

您可以使用反向引用这类任务(input是串的向量进行修改):它会搜索位于末端的最大字符串

gsub(pattern = "([0-9?-]+$)", 
    replacement = "|\\1", 
    x = input) 

基本上是由数字组成,“?”和“ - ”;采用该字符串并用前面的“|”替换其修改后的副本。

+0

是的它工作..谢谢很多 –

相关问题