R包roxygen文档中含{}的正则表达式如何原样显示?
R包roxygen文档正则表达式原样显示解决方案
针对你遇到的roxygen解析正则表达式时吃掉大括号、把[0-9]转成\link{}的问题,给你三个可行的解决办法:
办法1:用\dontrun{}包裹代码
把正则表达式的代码块放在\dontrun{}里,roxygen会把它当作未运行的示例代码,不会解析内部的特殊符号:
#' @details #' 以下是目标正则表达式的定义: #' \dontrun{ #' this <- c("letter-number"="^([a-zA-Z]{1}[0-9]+)") #' }
生成的Rd文档会完整保留代码格式,不会修改大括号和方括号。
办法2:手动转义特殊字符
直接对roxygen会识别的特殊符号做转义处理:
- 大括号
{}要写成\{和\}(R字符串里要写双重反斜杠\\{}) - 方括号
[]要写成\[和\](同样用\\[])
在@details里这么写:
#' @details #' 正则表达式定义: #' `this <- c("letter-number"="^\\([a-zA-Z]\\{1\\}[0-9]\\+\\)")`
这样roxygen就不会把这些符号当成语法标记处理,最终显示原始的正则表达式。
办法3:修改glue的分隔符避免冲突
因为你用到了glue,默认的{}分隔符和正则里的大括号冲突,直接修改glue的分隔符:
#' @details #' 正则表达式定义: #' `r glue::glue('this <- c("letter-number"="^([a-zA-Z]{1}[0-9]+)")', .open = '{{', .close = '}}')`
把glue的分隔符改成{{}},它就会忽略正则里的单个{},原样输出整个字符串。
内容的提问来源于stack exchange,提问作者StasK
相关产品推荐
相关产品推荐

