2017-08-08 10 views
0

は、この文字ベクトルトラブル、正規表現

columnsToKeep <- c("W","L","Customer Rate", "Diff% from Base", 
       "StoreOcc%", "COMPPS","Avail","Days in Unit", 
       "DSRC","Rec New Price", "Rec Rate Chg", 
       "intScheduledMoveOuts","TI30","BR1Yr", 
       "RLMI","NM7D","Last Rate Change %", "Occ%", 
       "Last Rate Change Amt", "BR", "MoveInRate", 
       "newRate", 
       "lengthOfStay", "mnyRentAtMoveIn", 
       "rentPriorToRateChange","mnyRentAtMoveOut","status") 

を考えると、私はこのコード

`Customer Rate`+ Diff% `from Base`+ `Days in Unit`+ `Rec New Price`+ `Rec Rate Chg`+ `Last Rate Change`+ % `Last Rate Change`+ Amt 

を生成するが、私はこの

をしたい

d<-columnsToKeep[grepl(" ", columnsToKeep)] 

cat(gsub("(\\%?\\w+\\s+\\w+\\s*\\w*)", '`\\1`+', d)) 

を試みます

`Customer Rate`+ `Diff% from Base`+ `Days in Unit`+ `Rec New Price`+ `Rec Rate Chg`+ `Last Rate Change %` + `Last Rate Change Amt` 

明らかに、%記号の正しい正規表現を提供するのに苦労しています。

+0

私はまったくの正規表現を使用することはありませんが::' paste0( "\'"、ペースト(columnsToKeep [greplあり得るには二つの方法( ""、columnsToKeep)]、collapse = "\' + \ '")、 "\' ")' – thelatemail

答えて

0

正規表現で何をしようとしているのか分かりませんが、dの各名前の前後にバッククォートを入れて+で結合したいようです。ちょうど `それを一緒にpaste` -

cat(sapply(d, function(s) { paste0("`", s, "`") }), sep="+ ") 

そして

cat(gsub("$", "`", gsub("^", "`", d)), sep="+ ") 
-1

単語の間に少なくとも1つのスペースが含まれているエントリを探しているようです。あなたはこの試みを与えることができます:"([\w%]+ [\w%]+(?: [\w%]+)*?)"あなただけなので(それも0-9_一致する)ビット危険かもしれません\wを使用して、文字や%にマッチしようとしているように見えます

。より具体的にすることができます"([A-Za-z%]+ [A-Za-z%]+(?: [A-Za-z%]+)*?)"

また、\sはスペース()を意味するものではありません。 すべての空白文字のセットなので、改行、キャリッジリターン、およびタブも一致します。スペースにマッチさせたい場合は、リテラルスペースを使用してください。