首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R中的重音不敏感正则表达式

R中的重音不敏感正则表达式
EN

Stack Overflow用户
提问于 2022-11-21 15:54:13
回答 3查看 34关注 0票数 2

我正在尝试使用filter(grepl())来匹配我专栏中的一些单词。让我们假设我想提取“瓜特尔”这个词。在我的专栏中,我有“卫报”、“卫报”和“担保书”等变体。为了匹配大写/小写单词,我使用了(?i)。然而,我还没有找到一个很好的方法来匹配口音/无口音(即“卫报”和“卫报”)。

我知道我可以简单地用á代替a,但是在代码中是否有一种分配重音不敏感的方法呢?它可以是基R/tidyverse/任何,我不介意。

以下是我现在的代码行:

代码语言:javascript
复制
cobras <- final %>% filter(grepl("(?i)guartelá", NAME) 
                           | grepl("(?i)guartelá", locality))

干杯

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2022-11-21 15:58:46

可以在OR语句中传递选项,使用[捕获不同的组合

代码语言:javascript
复制
> string <- c("Guartelá", "Guartela", "guartela", "guartelá", "any")
> grepl("[Gg]uartel[aá]", string)
[1]  TRUE  TRUE  TRUE  TRUE FALSE
票数 2
EN

Stack Overflow用户

发布于 2022-11-21 16:14:35

您可以使用stri_trans_general fron删除所有重音:

代码语言:javascript
复制
unaccent_chars= stringi::stri_trans_general(c("guartelá","with_é","with_â","with_ô")  ,"Latin-ASCII")
unaccent_chars
# [1] "guartela" "with_e"   "with_a"   "with_o" 
# grepl(paste(unaccent_chars,collapse = "|"), string)  
票数 4
EN

Stack Overflow用户

发布于 2022-11-21 15:59:45

使用str_detect()的另一个选项

代码语言:javascript
复制
library(tidyverse)
tibble(name = c("guartela","guartelá", "Guartela", "Other")) |> 
  filter(str_detect(name, "guartela|guartelá|Guartela"))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74521588

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档