我正在尝试检测单词重复字母的条件,我想用重复的字母替换这样的匹配条件。该文本是希伯来文。例如,שללללוווווםםםם
应该成为שלום
。
基本上,当一封信重复3次或更多时 - 应该检测并替换它。
我想对r gsub
使用正则表达式。
df$text <- gsub("?", "?", df$text)
答案 0 :(得分: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)
<强>详情:
(\\p{Hebrew})
- 第1组capturing来自希伯来语脚本的字符(\p{Hebrew}
为Unicode property/category class)\\1{2,}
- 2个或更多(由于{2,}
limiting quantifier)相同的字符存储在第1组缓冲区中(因为\\1
是{1}}到第1组内容)。