关于R中的正则表达式我有一个非常特殊的问题:
grepl("(|^)over","stackoverflow")
# [1] TRUE
grepl("(^|)over","stackoverflow")
# [1] FALSE
grepl("(^|x|)over","stackoverflow")
# [1] FALSE
grepl("(x|^|)over","stackoverflow")
# [1] FALSE
grepl("(x||^)over","stackoverflow")
# [1] TRUE
Run Code Online (Sandbox Code Playgroud)
为什么不对所有这些表达式进行评估TRUE?
POSIX正则表达式实际上应该使所有那些True.看来,R使用略加修改的威乐Laurikari的TRE库无法很好地遵循标准.我会遵循@ rawr的建议并使用perl = TRUE更合规的正则表达式.
另请参阅:当OR正则表达式组的两半匹配时,是否定义了哪个将被选择?