与Hmisc :: escapeRegex相反

时间:2014-12-01 11:17:51

标签: regex r grep escaping gsub

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

library(Hmisc)
string <- "this\\(system) {is} [full]."
escapeRegex(string)

它基于gsubregexp

escapestring <- gsub("([.|()\\^{}+$*?]|\\[|\\])", "\\\\\\1", string)
escapestring 
[1] "this\\\\\\(system\\) \\{is\\} \\[full\\]\\."

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

3 个答案:

答案 0 :(得分:1)

正则表达式怎么样

\\\\([.|()\\^{}+$*?]|\\[|\\])

替换为捕获组\1

使用示例

escapestring <- "this\\\\\\(system\\) \\{is\\} \\[full\\]\\."
string <- gsub("\\\\([.|()\\^{}+$*?]|\\[|\\])", "\\1", escapestring)
string
[1] "this\\(system) {is} [full]."

答案 1 :(得分:1)

可能这也有帮助

gsub("\\\\[(](*SKIP)(*F)|\\\\", '', escapestring, perl=TRUE)
#[1] "this\\(system) {is} [full]."

答案 2 :(得分:1)

实际上,您只需要在每个\之后保留角色即可取消。

string <- "this\\(system) {is} [full]."
library(Hmisc)
gsub("\\\\(.)", "\\1", escapeRegex(string))

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

或者rex可以使逃避和逃避更简单。

library(rex)
re_substitutes(escape(string), rex("\\", capture(any)), "\\1", global = TRUE)

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