在字符串中查找带有空格和减号的替代模式

时间:2019-07-26 14:54:50

标签: r grepl

我需要检测字符串向量中的某些模式。 关于如何记下某个模式,我有多个可能的变体,因此我将[]与|一起使用,例如“ summari [z | s] e” 除非在这种情况下(包括空格和“-”),否则一切正常。 这些甚至都不是逃脱的字符.. ..我想念什么?

我尝试使用\

转义
a<-"..contested - cred.."
b<-"..contested -cred.."
ab<-c(a,b)
grepl("..contested -[| ]",ab)

[1]是否

而我期望a和b都返回TRUE

2 个答案:

答案 0 :(得分:0)

我们可能需要。 |OR的元字符。在方括号内,它将按字面意义而不是OR进行评估。另外,我们可以使用字符在[]内进行匹配,而无需任何|

grepl("\\.{2}contested [- ]",ab)
#[1] TRUE TRUE

注意:.也是与任何字符匹配的元字符。因此,需要进行转义(\\.才能进行字面评估

答案 1 :(得分:0)

[| ]表示竖线或空格。您想要的是一个空间或什么都不是。在这种情况下,?表示出现0或1个先前字符。另外请注意,点是元字符,因此请对其进行转义。

grepl("^\\.\\.contested - ?cred\\.\\.$", ab)
## [1] TRUE TRUE