我正在尝试替换字符串中的开始和结束括号。 R似乎是为开场括号做的:
> gsub("[\\[]","==","hello [world]")
[1] "hello ==world]"
但不是结束括号
> gsub("[\\]]","==","hello [world]")
[1] "hello [world]"
为什么会这样?
答案 0 :(得分:2)
看,gsub("[\\]]","==","hello\\] [world]")
,[\]]
中的模式实际上与\
后跟]
匹配。试试gsub("[\\]]","==","hello\\] [world]")
,结果将是hello== [world]
,字面反斜杠将被替换。
在TRE正则表达式模式中,括号表达式中的\
与文字反斜杠匹配。
作为"[\\]]"
正则表达式的修正,您可以从模式中删除\
:
gsub("[[]","==","hello [world]")
你可以用PCRE模式转义它,因为PCRE 字符类允许它们内的转义字符:
gsub("[\\[]","==","hello [world]", perl=TRUE)
请参阅another demo
如果您需要替换[
或]
,只需将][
放在括号表达式中:
gsub("[][]","==","hello [world]")
答案 1 :(得分:1)
这很简单:
gsub("]", "==","hello [world]")
#"hello [world=="
答案 2 :(得分:1)
可能更可读/更直接的方法是使用stringi
,
library(stringi)
stri_replace_all_regex('hello [world]', '\\[|]', '==')
#[1] "hello ==world=="