[英]R grepl - matching two strings
我在R中使用grep / grepl函数时遇到问题。运行时
grepl("[Aa][Bb][Cc]x", c("Abcx", "abCy"))
我有:
[1] TRUE FALSE
没关系 同样,适用于:
grepl("[Aa][Bb][Cc]y", c("Abcx", "abCy"))
我有:
[1] FALSE TRUE
也没关系。 但是当我写:
grepl("[Aa][Bb][Cc]x | [Aa][Bb][Cc]y", c("Abcx", "abCy"))
它给我反常理
[1] FALSE FALSE
有什么问题?
您需要删除|
周围的空格|
:
grepl("[Aa][Bb][Cc]x|[Aa][Bb][Cc]y", c("Abcx", "abCy"))
这些空间很重要。 您可以使用带有(?x)
修饰符的PCRE正则表达式(请参见demo ),该修饰符可以在子模式之间引入一些格式化空格,以提高可读性:
grepl("(?x)[Aa][Bb][Cc]x | [Aa][Bb][Cc]y", c("Abcx", "abCy"), perl=TRUE)
或者最好使用以下较短的版本:
grepl("[Aa][Bb][Cc][xy]", c("Abcx", "abCy"))
首先将模式缩小为[Aa][Bb][Cc](x|y)
,由于这些都是单个字符,因此我建议使用字符类( (x|y)
-> [xy]
)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.