R 缺少gsub以在两个逗号之间添加字符串
我有以下字符串:R 缺少gsub以在两个逗号之间添加字符串,r,pattern-matching,gsub,R,Pattern Matching,Gsub,我有以下字符串: a <- "2015,,,,6GR,09,PRIVATE,NP,001" 我试过下面这句话: gsub("([,])([,])", "\\1YES\\2", a) 但我的输出是: "2015,YES,,YES,6GR,09,PRIVATE,NP,001" 有人能告诉我为什么GSB在中间缺少两个逗号吗?我怎么能解决这个问题? < P>我会尝试用另一种方式来解决它,而不是试图回答你的问题,我不能。 就这么做吧: a= unlist(strsplit(a,",")) a[
a <- "2015,,,,6GR,09,PRIVATE,NP,001"
我试过下面这句话:
gsub("([,])([,])", "\\1YES\\2", a)
但我的输出是:
"2015,YES,,YES,6GR,09,PRIVATE,NP,001"
有人能告诉我为什么GSB在中间缺少两个逗号吗?我怎么能解决这个问题? < P>我会尝试用另一种方式来解决它,而不是试图回答你的问题,我不能。 就这么做吧:
a= unlist(strsplit(a,","))
a[a==""]="YES"
a=paste(a,collapse=",")
我会试着用另一种方式为你解决问题,而不是试图回答你的问题,我不能回答 就这么做吧:
a= unlist(strsplit(a,","))
a[a==""]="YES"
a=paste(a,collapse=",")
您可以使用积极的:
或者,也可以是积极的:
gsub((?您可以使用正值:
或者,也可以是积极的:
gsub((?问题是,在匹配,
后,第二个逗号不会被重新扫描。请在“\\B”
匹配非单词边界的地方尝试此操作,以避免必须匹配第二个逗号。只要您没有以非单词字符开头的字段,例如“a,,,,,;B”
。它也不适用于第一个和最后一个字段,但问题中的表达式也不适用于这些字段,因此我们假设这不是问题
gsub(",\\B", ",YES", a)
## [1] "2015,YES,YES,YES,6GR,09,PRIVATE,NP,001"
问题是,在匹配,
后,第二个逗号不会被重新扫描。请在“\\B”
匹配非单词边界的地方尝试此操作,以避免必须匹配第二个逗号。只要您没有以非单词字符开头的字段,例如“a,,,,,;B”,则此操作应该有效
。它也不适用于第一个和最后一个字段,但问题中的表达式也不适用于这些字段,因此我们假设这不是问题
gsub(",\\B", ",YES", a)
## [1] "2015,YES,YES,YES,6GR,09,PRIVATE,NP,001"
我在代码中尝试了perl=T,认为它可以修复。我不知道积极的前瞻,非常感谢。@kukushkin:perl=TRUE不会修复您的正则表达式,只需要支持“环顾四周”即可gsub正则表达式中的功能。添加了一个简短的解释。我在代码中尝试了perl=T,认为它会修复。我不知道积极的前瞻性,非常感谢。@kukushkin:perl=TRUE不会修复您的正则表达式,只需要支持gsub正则表达式中的“环顾四周”功能。添加了一个简短的解释
gsub(",\\B", ",YES", a)
## [1] "2015,YES,YES,YES,6GR,09,PRIVATE,NP,001"