Regex 正则表达式:“;(二)";vs";"(|)";
关于R中的正则表达式,我有一个非常特殊的问题:Regex 正则表达式:“;(二)";vs";"(|)";,regex,r,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")
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正则表达式实际上应该使所有这些都为TRUE。这其中的一个似乎并不完全符合标准。我会按照@rawr的建议,使用perl=TRUE
来获得更兼容的正则表达式
另请参见:不确定默认库(POSIX 1003.2扩展正则表达式)的原因,但与pcre
grepl((^ |)over)、“stackoverflow”,perl=TRUE)的工作方式相同。
R默认使用POSIX ERE的TRE实现,并使用perl type by选项: