Lookahead正则表达式 - 识别重复的连续字母

时间:2015-02-22 05:28:08

标签: regex go

我有一个字符串 - 例如,“Hello Worrld”。注意“r”字母重复两次。

我希望识别连续发生的字母(两次或多次)并仅保留其中一种字母。也就是说,我希望用一个“r”来获得“Hello World”。

Golang似乎没有前瞻性的正则表达式。

我尝试使用以下正则表达式来识别连续重复的字母 -

r := regexp.Compile(`(.)\1`)

但它选择了两个字母的出现 - 我只希望选择其中一个。

1 个答案:

答案 0 :(得分:5)

您可以使用pcre绑定,但是如果您只想删除重复字母,可以使用strings.Map,例如:

func stripDups(s string) string {
    var last rune
    return strings.Map(func(r rune) rune {
        if r != last {
            last = r
            return r
        }
        return -1
    }, s)
}

playground