【发布时间】:2014-11-28 01:28:50
【问题描述】:
是否有正则表达式可以保留\U 和\L 的大小写模式?
在下面的示例中,我想将"date" 转换为"month",同时保持input 中使用的大小写
from to
"date" ~~> "month"
"Date" ~~> "Month"
"DATE" ~~> "MONTH"
我目前使用三个对sub 的嵌套调用来完成此操作。
input <- c("date", "Date", "DATE")
expected.out <- c("month", "Month", "MONTH")
sub("date", "month",
sub("Date", "Month",
sub("DATE", "MONTH", input)
)
)
目标是有一个pattern和一个replace,比如
gsub("(date)", "\\Umonth", input, perl=TRUE)
这将产生所需的输出
【问题讨论】:
-
为什么不通过命名矢量使用地图:
map <- setNames(expected.output, input)。然后做month <- map[date]。 -
@flodel - 聪明的想法 - 这里真的不需要任何正则表达式。
-
@flodel -- 我怀疑 Ricardo 也想要一个适用于
input <- "Here are a date, a Date, and a DATE"等输入的解决方案 -
是的,正是@JoshO'Brien。 Flodel,为了这个问题,我试图简化这个例子。也许我过于简单了
-
我的直觉说你不能用一个正则表达式来做;使用
for循环或使用Reduce。