使用 stringr 匹配来自损坏文件名的文本

Matching text from corrupted filenames with stringr

我有一个数据框,其中一列是 GPS 文件中的航路点名称。一些 waypoints 已损坏,并且这些名称的格式很奇怪,其中的符号(我认为)不是字母数字。

我最终试图从数据中删除这些文件名,但我不确定如何正确匹配非字母数字文本。我试过下面的代码,将不正确文本格式的匹配文本与格式正确的文件名进行比较。

对于每一个,我都会遇到意想不到的行为,大概是由于语法不正确或者可能是因为一些奇怪的符号实际上被算作字母数字字符?

如何正确使用 stringr 来匹配这些损坏的文件名?

corrupt_names <- c("矸Хꦉ㠀", "絀Ш㥺㸞>Ä©","ç€Ð¥Ü㣗","羈Х㡃") # create example filenames
correct_names <- c("1050M", "1800L","Newwaypoint1") # create example of correct filenames

str_view(corrupt_names,"[^alnum]+") # seems to select correct non alphanumeric symbols
str_view(correct_names,"[^alnum]+") # but this also selects alphanumeric characters in the correct names vector?

str_view(corrupt_names,"[^[:alnum:]]+") # selects only some symbols
str_view(correct_names,"[^[:alnum:]]+") # seems to work ok, doesn't select anything

编辑:在我的 r 脚本中创建示例向量后,我在尝试保存文件时收到警告:“并非 C:/Myfile.R 中的所有字符都可以使用 ISO8859-1 进行编码. 要使用不同的编码保存,请选择“文件 |使用编码保存...”从主菜单。我认为这与问题有关。

您想查找包含除 ASCII 字母和数字以外的任何字符的所有条目。

您可以使用

str_view(corrupt_names,"[^A-Za-z0-9]")

[^A-Za-z0-9] 表示一个取反字符 class 匹配除 A-Za-z 范围内的字母和数字以外的任何字符 0-9.