这只是一个更大,更复杂的数据集的最小示例,它只是试图让我有所了解。
> grep("X10\\.1+",c("X10.10","X10.11","X10.12"))
[1] 1 2 3
现在,我希望只返回
2
,因为“+”应该是“1个或更多的前一个元素”。我认为逃避期间(我必须处理,因此希望将其保留在示例中)可能是造成此问题的原因。> grep("X101+",c("X1010","X1011","X1012"))
[1] 1 2 3
因此,我对“+”功能的理解是错误的吗?
结论:
谢谢@詹姆斯。因此,我的理解是+是“前一个元素的另外1个或多个”,而不是它的实际含义,即“前一个元素的1个或多个”。
11+会完成我的想法(在第一个1等之后又有1个或多个1)。干杯
最佳答案
您需要表明,在任意数量的1之后,您要匹配字符串的结尾。您可以使用$
来做到这一点。
grep("X10\\.1+$",c("X10.10","X10.11","X10.12"))
[1] 2
同样,如果您想限制匹配以
^
开头,而不是例如与现有正则表达式匹配的X10.
,则PX10.
匹配字符串的开头。