R 为什么';[,-\\]和x27;匹配';46'';X'';A';,

R 为什么';[,-\\]和x27;匹配';46'';X'';A';,,r,regex,R,Regex,我尝试使用strsplit(str,'[,-\\+])拆分字符串,这意味着任何,'-'或'+'都可以是分隔符。然而,我发现这个模式似乎也匹配数字和大写字母。 试一试 grep('[,-\\]','X'),返回1 grep('[,-\\]','46'),返回1 grep('[,-\\]','-')返回1 grep(“[,-\\]”,“,”),返回1 它似乎是'[,-\\]'匹配所有数字、大写字母、'、和'-' 我只是不明白为什么会这样 感谢您提供您需要使用的任何输入 strsplit(str,

我尝试使用strsplit(str,'[,-\\+])拆分字符串,这意味着任何
,'-'或'+'
都可以是分隔符。然而,我发现这个模式似乎也匹配数字和大写字母。 试一试

  • grep('[,-\\]','X'),返回1
  • grep('[,-\\]','46'),返回1
  • grep('[,-\\]','-')返回1
  • grep(“[,-\\]”,“,”),返回1
它似乎是
'[,-\\]'
匹配所有数字、大写字母、
'、
'-'

我只是不明白为什么会这样

感谢您提供您需要使用的任何输入

strsplit(str, '[,+-]')
+
-
上拆分。如果需要添加要拆分的
\
,请将
'[,\\+-]'
与默认的TRE regex引擎一起使用

-
位于括号表达式的末尾(或开头)时,它将被解析为文字连字符。在您的情况下,它被视为一个范围运算符,
'[,-\\]'
匹配
\
之间的字符范围:


注意,这里使用的是TRE regex风格(因为没有指定任何
perl=TRUE
),因此,双反斜杠在regex模式中被视为文字反斜杠<代码>“[,-\\]”模式将无效如果您使用PCRE正则表达式引擎来解析模式,则需要在字符串文本中定义一个带有4个反斜杠的反斜杠。

如果我更改模式的顺序,如“[\+,-]”,则这只匹配“+”、“,”和“-”。我对可能的副本感到困惑