这只是一个更大,更复杂的数据集的最小示例,它只是试图让我有所了解。

> 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.匹配字符串的开头。

07-24 22:26