如何在同一单词中找到重复的单词?

时间:2019-05-08 10:18:34

标签: python python-3.x string

给定字符串“ LEMONLEMONLEMO ”时,我需要编写代码 我必须找到重复的单词并返回:“ LEMON

给出“ APPLLEAPL ”,返回“ APLLE ”。

假设该字符串是同一单词的重复形式。

我只是从Python开始,这使我很难思考如何解决该问题。

1 个答案:

答案 0 :(得分:3)

我们可以尝试匹配以下正则表达式模式:

(.*).*\1

这表示要匹配并捕获一定数量的字符,只要稍后在输入中出现相同的组即可。

input = "LEMONLEMO"
result = re.match(r'(.*).*\1', input)
match = result.group(1)
print(match)

LEMO

res = re.match(match + '.*' + '(?=' + match + ')', input)
output = res.group(0)
print(output)

LEMON

(.*)很贪婪,因此默认情况下,它应该找到最长子字符串,该子字符串稍后也会重复出现。

编辑:

要考虑您的全部要求,找到LEMO之后,我们需要从第一个匹配开始直到(但不包括)重复出现LEMO的全部子字符串。我为此使用了这种正则表达式模式:

LEMO.*(?=LEMO)

代码看起来有些粗糙,因为上面的模式需要动态构建。