正则表达式:"(^ |)" vs"(| ^)"

时间:2016-03-09 23:42:53

标签: regex r

我对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

1 个答案:

答案 0 :(得分:6)

POSIX正则表达式实际上应该使所有这些都成为True。 R uses a slightly modified versionVille Laurikari's TRE library似乎并不完全符合标准。我会遵循@ rawr的建议并使用perl = TRUE来获得更符合规范的正则表达式。

另请参阅:When both halves of an OR regex group match, is it defined which will be chosen?