R、regex中的引号和可选通配符有问题
给定这个特征向量R、regex中的引号和可选通配符有问题,r,regex,R,Regex,给定这个特征向量 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",
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`
显然,我很难为%符号提供正确的正则表达式。我猜您只是在寻找单词之间至少包含一个空格的条目。您可以尝试一下:
“([\w%]+[\w%]+(?:[\w%]+)*?)”
看起来您只是试图匹配字母和%
,因此使用\w
可能有点危险(它还匹配0-9
和
)。您可以更具体地使用“([A-Za-z%]+[A-Za-z%]+(?:[A-Za-z%]+)*?”
另外,请注意,
\s
不仅仅意味着一个空格(
)。它是所有空白字符的集合,因此它也将匹配换行符、回车符和制表符。如果您想匹配一个空格,只需使用一个文本空格。我不太确定您想用正则表达式做什么,但看起来您想在d中的每个名称周围加上反勾号,然后用+。实现这一目标的两种方法是:
cat(sapply(d, function(s) { paste0("`", s, "`") }), sep="+ ")
及
我根本不会使用正则表达式-只是将它粘贴在一起:
paste0(“`”,粘贴(columnsToKeep[grepl(“,columnsToKeep)],collapse=“+”),“`”)
`Customer Rate`+ `Diff% from Base`+ `Days in Unit`+ `Rec New Price`+ `Rec Rate Chg`+ `Last Rate Change %` + `Last Rate Change Amt`
cat(sapply(d, function(s) { paste0("`", s, "`") }), sep="+ ")
cat(gsub("$", "`", gsub("^", "`", d)), sep="+ ")