使用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),]
非常有效。非常感谢。也感谢您的内联编辑:)我明白您关于不需要[]字符类的观点。谢谢你的洞察力!