[英]R: Replacing multiple matches with matches
我正在尝试缩短字符串中的一些正则表达式匹配项。 这是一个例子
vYears = c('Democrat 2000-2004',
'Democrat 2004-2008',
'Democrat 2008-2012',
'Republican 2000-2004',
'Republican 2004-2008',
'Republican 2008-2012',
'Tossup')
我可以匹配我想要的表达式,并得到匹配,就像这样
grepYears = gregexpr('20[0-9]{2}', vYears)
regmatches(vYears, grepYears)
但是,我正在尝试将字符串缩短为
vYearsShort = c('Democrat 00-04',
'Democrat 04-08',
'Democrat 08-12',
'Republican 00-04',
'Republican 04-08',
'Republican 08-12',
'Tossup')
我该如何实现?
您可以使用gsub
。 利用反向引用捕获所需的部分:
> vYears = c('Democrat 2000-2004',
+ 'Democrat 2004-2008',
+ 'Democrat 2008-2012',
+ 'Republican 2000-2004',
+ 'Republican 2004-2008',
+ 'Republican 2008-2012',
+ 'Tossup')
> vYearsShort = gsub("20([0-9]{2})", "\\1", vYears)
> vYearsShort
[1] "Democrat 00-04" "Democrat 04-08" "Democrat 08-12" "Republican 00-04"
[5] "Republican 04-08" "Republican 08-12" "Tossup"
您可以匹配以下正则表达式:
^(\\w+\\s)20(\\d{2}-)20(\\d{2})$
并替换为:
\\1\\2\\3
或$1$2$3
或\\\\1\\\\2\\\\3
用于数组中的earch字符串。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.