我试图检测单词有重复的字母的条件,并且我想用重复的字母替换这种匹配的条件。文本是用希伯来语写的。例如,שללללוווווםםםם
应该只是שלום
。 基本上,当一封信重复3次或更多时 - 应该被检测到并被替换。用正则表达式捕获一个字中的字母重复
我想使用r gsub
的正则表达式。
df$text <- gsub("?", "?", df$text)
我试图检测单词有重复的字母的条件,并且我想用重复的字母替换这种匹配的条件。文本是用希伯来语写的。例如,שללללוווווםםםם
应该只是שלום
。 基本上,当一封信重复3次或更多时 - 应该被检测到并被替换。用正则表达式捕获一个字中的字母重复
我想使用r gsub
的正则表达式。
df$text <- gsub("?", "?", df$text)
您可以使用
> x = "שללללוווווםםםם"
> gsub("(.)\\1{2,}", "\\1", x)
#[1] "שלום"
注意: - 它将取代其重复三次以上的任何字符(不仅仅是希伯来语)。任何语言
或以下只字母/数字
> gsub("(\\w)\\1{2,}", "\\1", x)
非常感谢。 –
如果您打算只删除从希伯来脚本(保持其他)重复字符,我建议:
s <- "שללללוווווםםםם ......... שללללוווווםםםם"
gsub("(\\p{Hebrew})\\1{2,}", "\\1", s, perl=TRUE)
详细:
(\\p{Hebrew})
- 第1组capturing希伯来语脚本的字符(如\p{Hebrew}
是Unicode property/category class)\\1{2,}
- 存储在组1个缓冲液(如\\1
2以上(由于{2,}
limiting quantifier)相同的字符是一个backreference到组1内容)。
小心不要因为违反规则而要求包裹。它最多只会让你的问题关闭,你的问题提问权限会受到更严重的限制。但是,您可以在Software Recommendations SE站点上询问。 –