2016-08-20 42 views
1

我试图检测单词有重复的字母的条件,并且我想用重复的字母替换这种匹配的条件。文本是用希伯来语写的。例如,שללללוווווםםםם应该只是שלום。 基本上,当一封信重复3次或更多时 - 应该被检测到并被替换。用正则表达式捕获一个字中的字母重复

我想使用r gsub的正则表达式。

df$text <- gsub("?", "?", df$text) 
+0

小心不要因为违反规则而要求包裹。它最多只会让你的问题关闭,你的问题提问权限会受到更严重的限制。但是,您可以在Software Recommendations SE站点上询问。 –

回答

4

您可以使用

> x = "שללללוווווםםםם" 
> gsub("(.)\\1{2,}", "\\1", x) 
#[1] "שלום" 

注意: - 它将取代其重复三次以上的任何字符(不仅仅是希伯来语)。任何语言

或以下只字母/数字

> gsub("(\\w)\\1{2,}", "\\1", x) 
+1

非常感谢。 –

2

如果您打算只删除从希伯来脚本(保持其他)重复字符,我建议:

s <- "שללללוווווםםםם .........   שללללוווווםםםם" 
gsub("(\\p{Hebrew})\\1{2,}", "\\1", s, perl=TRUE) 

regex demo in R

详细