此问题已在 this 中解决问题及解答 here (并且还引用了this问题),但他们都没有真正回答这个问题——为第一个问题提供的答案回避了这个问题。更一般的正则表达式答案似乎不适用于 R:
gsub('[\\]`]', '', '`]')
# [1] "`]"
我正在尝试匹配一组特定的标点符号,所以 [:punct:]
太笼统了。
最佳答案
字符类中的右括号似乎对我有用未转义,即只需使用此:
gsub('[]`]', '', '`]')
[1] ""
看来 R 解释器“知道”平衡字符类中的右括号或左括号(即由正确的左括号和右括号组成)实际上只是一个字符。
以下是这一说法的证据:
gsub('[]a-z`]', '', '`]abc')
[1] ""
如果第一个 []
是封闭且空的字符类,则范围 a-z
不应该起作用,而字母 b
和 c
应该保持不变。
另外:如果我们尝试使用空字符类进行替换,我们会收到错误,例如
gsub('[]', '', '`]')
Error in gsub("[]", "", "`]") :
invalid regular expression '[]', reason 'Missing ']''
关于r - 如何在 R 的字符类中包含右方括号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43840013/