r语言 - 正则表达式:“(^|)“ vs ”(|^)”



关于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

为什么所有这些表达式的计算结果都不TRUE

POSIX正则表达式实际上应该使所有这些为真。看起来R使用了Ville Laurikari的TRE库的略微修改版本,该版本并不完全遵循标准。我会遵循@rawr的建议,并使用perl = TRUE来获得更合规的正则表达式。

另请参阅:当 OR 正则表达式组的两半匹配时,是否定义了将选择哪个?

最新更新