所以我有两个字符串,例如 mylist<-c('claim', 'cl.bi')
, 当我这样做的时候
grep('^cl\\.*', mylist)
它同时返回 1 和 2。但是如果我这样做了
grep('^cl\\.', mylist)
它只会返回 2。那么为什么第一个匹配 'claim'
?期间匹配发生了什么?
最佳答案
"^cl\\.*"
匹配 "claim"
因为 *
量词是这样定义的(这里引用自 ?regex) :
'*' The preceding item will be matched zero or more times.
“claim”
包含行首,然后是 c
,然后是 l
,然后是零(在本例中) 或更多点,因此满足成功匹配的所有要求。
如果您只想匹配以 cl.
开头的字符串,请使用一次或多次 量词,+
,如下所示:
grep('^cl\\.+', mylist, value=TRUE)
# [1] "cl.bi"
关于regex - R grep匹配点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32916884/