У меня есть строка, похожее на это:Как найти повторяющуюся строку с совпадением шаблонов?
[13:41:25] [100:Devnull]: 01:41:20, 13:41:21> |Hunit:Player-3693-07420299:DevnullYour [Chimaera Shot] hit |Hunit:Creature-0-3693-1116-3-87318-0000881AC4:Dungeoneer's Training DummyDungeoneer's Training Dummy 33265 Nature.
В случае вы удивляетесь, это из World Of Warcraft.
Я хотел бы закончить с чем-то вроде этого:
[13:41:25] [100:Devnull]: 01:41:20, 13:41:21> Your [Chimaera Shot] hit Dungeoneer's Training Dummy 33265 Nature.
Если вы заметили, "Training Dummy Dungeoneer в" печатается дважды. Я сумел избавиться от первого "| Hunit" часть с чем-то вроде этого:
str = "[13:41:25] [100:Devnull]: 01:41:20, 13:41:21> |Hunit:Player-3693-07420299:DevnullYour [Chimaera Shot] hit |Hunit:Creature-0-3693-1116-3-87318-0000881AC4:Dungeoneer's Training DummyDungeoneer's Training Dummy 33265 Nature."
str = string.gsub(str, "|Hunit:.*:.*Your", "Your")
Который возвращает это:
print(str) # => [13:41:25] [100:Devnull]: 01:41:20, 13:41:21> Your [Chimaera Shot] hit |Hunit:Creature-0-3693-1116-3-87318-0000881AC4:Dungeoneer's Training DummyDungeoneer's Training Dummy 33265 Nature.
Затем я добавить второй GSUB:
str = string.gsub(str, "|Hunit:.*:", "")
print(str) # => [13:41:25] [100:Devnull]: 01:41:20, 13:41:21> Your [Chimaera Shot] hit Dungeoneer's Training DummyDungeoneer's Training Dummy 33265 Nature.
Но двойная строка «Dungeoneer's Training Dummy» повторяется, очевидно.
Как я мог избавиться от дублированной строки? Эта строка может быть чем угодно, в этом случае это «Dummy's Dummy's Dummy», но это может быть название любой другой цели.
Это делает, хотя мне все еще требуется конечная «Природа 33265». Не могли бы вы объяснить, что происходит в вашей функции? Если это не так много. – user3209270
После удаления 33265 Nature функция проверяет, можно ли разбить текущую строку на две половины и проверить, одинаковы ли эти две половины. Я добавлю дополнительные комментарии ... –
Обновите решение, чтобы сохранить в нем '33265 Nature'. –