编辑--我在RVersion3.6.1上遇到了这个问题,在较新的版本中,这个问题并不存在,而且函数的行为也是相似的。
考虑到这个向量,其中第一个元素在拉丁文-1补充unicode块中,第二个元素在拉丁扩展附加unicode块中,元素3-7在拉丁扩展D unicode块中(拉丁扩展E unicode块也是如此)。使用的正则表达式是^[\\p{L} ]+$,它应该将字符串与来自任何语言的任何类型的字母匹配。我看到grepl和stri_detect_regex对p{L}的解释有所不同。
v <- c("é", "Ḃ", "Ꞵ", "ꞵ", "Ꞷ", "ꞷ","keepme", "remove$me", "remove.me")
v[grepl("^[\\p{L} ]+$", v, perl = T)]
# [1] "é" "Ḃ" "keepme"
v[stri_detect_regex(v, "^[\\p{L} ]+$")]
# [1] "é" "Ḃ" "\ua7b4" "\ua7b5" "\ua7b6" "\ua7b7" "keepme"是否有任何文档说明它们在这个表达式上的行为为何不同?
发布于 2022-09-02 07:27:19
这种情况发生在较早的R版本上,RVersion3.6.1 base并不能识别使用regex p{L}的所有unicode块,但是正如@Oliver注释的那样,它在R的后期版本中所做的事情和他在R4.2.1中测试的一样。对我来说,这个问题得到了回答。谢谢!
https://stackoverflow.com/questions/73553359
复制相似问题