grep和正则表达式 - 元/通配符

nzc*_*ops 2 regex r

这是一个更大的更复杂的数据集的最小例子,只是试图让我的头脑周围的东西.

> grep("X10\\.1+",c("X10.10","X10.11","X10.12"))
[1] 1 2 3
Run Code Online (Sandbox Code Playgroud)

现在我2原本只期望被归还,因为'+'应该是'前面元素中的一个或多个'.我认为逃避这段时间(我必须处理,所以想要保持在示例中)可能导致问题.

> grep("X101+",c("X1010","X1011","X1012"))
[1] 1 2 3
Run Code Online (Sandbox Code Playgroud)

那么,我对'+'功能的理解是错误的?

结论:

谢谢@James.所以我的理解是+是'另外一个或多个前面的元素'而不是它实际意味着什么,这是'只需要前面一个元素的一个或多个'.

11+会完成我的想法(在第一个之后有1个或更多的1个等).干杯

Jam*_*mes 6

您需要表示在任意数量的1之后,您希望匹配字符串的结尾.你$用来做这个.

grep("X10\\.1+$",c("X10.10","X10.11","X10.12"))
[1] 2
Run Code Online (Sandbox Code Playgroud)

同样,^如果要限制匹配开始X10.,则匹配字符串的开头,而不是PX10.匹配现有正则表达式匹配的实例.

  • @Nikos因为否则它匹配包含模式的字符串,这是OP发布的问题. (2认同)