【发布时间】:2017-05-05 18:08:53
【问题描述】:
在 R 中,我有一个字符串,其中包含重复的字符组:
testString <- "Hi hi missing u lollol hahahahalol sillybilly haaaaa!"
我正在尝试使用 gsub 正则表达式替换每个单词中重复的字符组以产生以下输出:
"Hi hi missing u lol halol sillybilly haaaaa!"
我尝试了以下行,但没有产生正确的输出:
gsub("[[:blank:]](.+?){2,}[[blank]]\\1",
replacement="\\1", testString, perl=TRUE)
我做错了什么?
【问题讨论】:
-
为什么是
haaaaa?也许haaa?为什么预计它不会被修改? -
你需要一个backreference
-
这非常接近...
gsub('((([A-Za-z]+)[^\\1]+)\\2+)', '\\3', testString) -
@WiktorStribiżew 你能帮助诊断我的方法有什么问题吗?有机会挽回吗?
-
@MichaelChirico:是的,因为您使用的是 TRE 正则表达式,
"[^\\1]"匹配除\和1之外的任何字符。如果您使用 PCRE 正则表达式,则它匹配除 SOH 字符之外的任何字符。见this R demo。但是,这种方法在修复后不起作用 - 请参阅 this demo。