用正则表达式捕获单词中重复的字母

时间:2016-08-20 13:41:32

标签: regex r

我正在尝试检测单词重复字母的条件,我想用重复的字母替换这样的匹配条件。该文本是希伯来文。例如,שללללוווווםםםם应该成为שלום。 基本上,当一封信重复3次或更多时 - 应该检测并替换它。

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

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

2 个答案:

答案 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)

请参阅regex demo in R

<强>详情: