这是一个更大的更复杂的数据集的最小例子,只是试图让我的头脑周围。
> grep("X10\\.1+",c("X10.10","X10.11","X10.12"))
[1] 1 2 3
现在我预计只会返回2
,因为'+'应该是'前面元素中的一个或多个'。我认为逃避这个时期(我必须处理这个问题,所以希望将其保留在示例中)可能导致了这个问题。
> grep("X101+",c("X1010","X1011","X1012"))
[1] 1 2 3
那么,我对'+'功能的理解是错误的吗?
结论:
谢谢@James。所以我的理解是+是'另外一个或多个前面的元素'而不是它实际意味着什么,它是'只需要前面一个元素的一个或多个'。
11+会完成我的想法(在第一个之后有1个或更多的1个等)。干杯
答案 0 :(得分:6)
您需要表示在任意数量的1之后,您希望匹配字符串的结尾。您可以使用$
执行此操作。
grep("X10\\.1+$",c("X10.10","X10.11","X10.12"))
[1] 2
同样,^
匹配字符串的开头,如果您想限制匹配开始X10.
,而不是PX10.
,例如现有的正则表达式匹配。< / p>
答案 1 :(得分:2)
在这种情况下,前面的元素是数字'1',它出现在所有3个元素中的那个位置。您之前对“+”的理解是正确的。