Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用grep筛选R中字符串中包含两个或多个模式的行_R_Regex - Fatal编程技术网

使用grep筛选R中字符串中包含两个或多个模式的行

使用grep筛选R中字符串中包含两个或多个模式的行,r,regex,R,Regex,我需要对其中一列中以“B-”或“B^”开头的字符串的所有行进行索引。我尝试了很多组合,但我怀疑它可能不起作用,因为“-”和“^”符号也是grep命令的一部分 dataset[grep('^(B-|B^)[^B-|B^]*$', dataset$Col1),] 在上述脚本中,不会提取以“B^”开头的行。请建议一种明智的处理方法。您可以使用grep中的escape\命令: dataset[grep('^(B\\-|B\\^)[^B\\-|B\\^]*$', dataset$Col1),] 为了进

我需要对其中一列中以
“B-”
“B^”
开头的字符串的所有行进行索引。我尝试了很多组合,但我怀疑它可能不起作用,因为“-”和“^”符号也是grep命令的一部分

dataset[grep('^(B-|B^)[^B-|B^]*$', dataset$Col1),]

在上述脚本中,不会提取以
“B^”
开头的行。请建议一种明智的处理方法。

您可以使用
grep
中的escape
\
命令:

dataset[grep('^(B\\-|B\\^)[^B\\-|B\\^]*$', dataset$Col1),]

为了进一步解释,<代码> ^ 将字符串的开头与锚点匹配,因此必须在字符串中间脱空。

[]
是一个字符类,因此
[^B-|B^]*
匹配任何不是B、、、B或^的字符。它们在这里是不必要的

简化的正则表达式是:
dataset[grep('^(B-| B\\^'),dataset$Col1),]

非常有效。非常感谢。也感谢您的内联编辑:)我明白您关于不需要[]字符类的观点。谢谢你的洞察力!