我正在学习R语言的正则表达式,但是我不太理解这个
或者
gsub
的例子:gsub("([.|()\\^{}+$*?]|\\[|\\])", "\\\\\\1", x)
到目前为止,我理解的是:
- 如果x是字母数字,则不匹配,因此不做任何修改
- 如果x包含
.
或|
或(
或{
或}
或+
或$
或?
,则在其前面添加\\
我无法解释:
> gsub("([.|()\\^{}+$*?]|\\[|\\])", "\\\\\\1", '10\1')
[1] "10\001"
或者
> gsub("([.|()\\^{}+$*?]|\\[|\\])", "\\\\\\1", '10/1')
[1] "10/1"
我也不明白为什么替换字符串"\\\\\\1"
只添加了两个括号。
我应该弄清楚这个函数的作用,我认为它应该转义某些特殊字符吗?
gsub
替换模式起作用 -gsub("([][.|()\\^{}+$*?])","\\1","[ ]")
会报错。 - thelatemail"[][|(.)\\^{}+$*?]"
。与方括号内元字符的顺序有关。gsub("([][|(.)\\^{}+$*?])", "hit", "]") #[1] "hit"
- IRTFM"\\\\1"
和"\\\\\\1"
的区别吗?我不确定我理解了。 - will resal> gsub("([.|()\\^{}+$*?]|\\[|\\])", "\\\\\\1", '10.1') [1] "10\\.1" > gsub("([.|()\\^{}+$*?]|\\[|\\])", "\\\\1", '10.1') [1] "10\\11"
是我原来问题中的内容,而不是你的答案。 - will resal