给定字符串“ LEMONLEMONLEMO ”时,我需要编写代码 我必须找到重复的单词并返回:“ LEMON ”
给出“ APPLLEAPL ”,返回“ APLLE ”。
假设该字符串是同一单词的重复形式。
我只是从Python开始,这使我很难思考如何解决该问题。
答案 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)
代码看起来有些粗糙,因为上面的模式需要动态构建。