首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Hmisc的对立面::escapeRegex

Hmisc的对立面::escapeRegex
EN

Stack Overflow用户
提问于 2014-12-01 11:17:50
回答 3查看 145关注 0票数 0

函数Hmisc::escapeRegex转义字符串中的任何特殊字符。

代码语言:javascript
复制
library(Hmisc)
string <- "this\\(system) {is} [full]."
escapeRegex(string)

它基于gsubregexp

代码语言:javascript
复制
escapestring <- gsub("([.|()\\^{}+$*?]|\\[|\\])", "\\\\\\1", string)
escapestring 
[1] "this\\\\\\(system\\) \\{is\\} \\[full\\]\\."

如何从escapestring中删除反斜杠以便检索原始的string

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-12-04 17:34:35

实际上,您只需要保留每个\之后的字符就可以不转义了。

代码语言:javascript
复制
string <- "this\\(system) {is} [full]."
library(Hmisc)
gsub("\\\\(.)", "\\1", escapeRegex(string))

#> [1] "this\\(system) {is} [full]."

或者,雷克斯可能会使转义和未转义都变得简单一些。

代码语言:javascript
复制
library(rex)
re_substitutes(escape(string), rex("\\", capture(any)), "\\1", global = TRUE)

#> [1] "this\\(system) {is} [full]."
票数 1
EN

Stack Overflow用户

发布于 2014-12-01 11:38:47

那判决呢?

代码语言:javascript
复制
\\\\([.|()\\^{}+$*?]|\\[|\\])

用捕获组\1替换

示例用法

代码语言:javascript
复制
escapestring <- "this\\\\\\(system\\) \\{is\\} \\[full\\]\\."
string <- gsub("\\\\([.|()\\^{}+$*?]|\\[|\\])", "\\1", escapestring)
string
[1] "this\\(system) {is} [full]."
票数 1
EN

Stack Overflow用户

发布于 2014-12-01 12:46:26

也许这也有帮助

代码语言:javascript
复制
gsub("\\\\[(](*SKIP)(*F)|\\\\", '', escapestring, perl=TRUE)
#[1] "this\\(system) {is} [full]."
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27227229

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档