1

请帮助我解决以下困惑:

qdapRegex::rm_nchar_words("è ûé", "1,2")
[1] "è ûé"

qdapRegex::rm_nchar_words('k ku ppp d', "1,2")
[1] "ppp"

为什么在第一个代码行中它没有以“”响应,但在第二个代码行中它按预期工作。我在这里想念什么?我唯一能想到的是,在第一行代码中,字符串是由非英文字母构建的。

有什么解决办法吗?

在此处输入图像描述

4

1 回答 1

1

正如包的作者所说:

它用于\w定义定义为的字母[A-Za-z0-9_]。您需要编写自己的自定义正则表达式来处理非 ascii 字母

更新:

在我的 Win 7 机器上,输出符合预期。

使用模式解决它的一种可能方法"[\\pL_]"(任何语言的任何单词)

rm_nchar_words("è ûé", "1,2", pattern = "[\\pL_]")

Win机器上的语言环境:

locale:
[1] LC_COLLATE=English_United States.1252  LC_CTYPE=English_United States.1252    LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C                           LC_TIME=English_United States.1252  

我将继续对此进行调查并发布更新以获取我的答案。

更新 2:

rm_nchar_words("è ûé", "1,2", pattern = "[\\pL_]")
""

适用于我的 Ubuntu 18.04。

于 2019-06-11T17:57:58.887 回答