import re

SONG_LYRICS = "a" + "'" * 10000 + "a" + "'" * 10000

SONG_LYRICS = """
ショーケースのなか過ごしてた
誰も彼もが過ぎ去っていた
怖かったんだあの日君に連れられるまでは

ぼくとおんなじの小さな手
転げ回り　くすぐり合う僕ら
こんなに君のことが好きになってた

どんなときでも傍にいて
君が言うなら
ああ〜

名前はるる　名前よんでよ
君がつけてくれた名前だから
寂しい時も悲しい時も
傍にいるときめた大事な人
"""

SONG_LYRICS = """ 主歌1琴弦锈在第七年梅雨季苔藓爬上旧唱片的沟渠她提着裙摆涉过月光来修剪我坍塌的废墟副歌爱到骨缝里生出藤蔓摇晃在断裂的悬崖边嫁接星光她缝补我所有溃散的夜晚用碎玻璃折射出银河形状主歌2指节缠绕着褪色输液管呼吸机开出透明的铃兰她折下肋骨作止血绷带在溃烂处种满春天副歌爱到脊椎里抽枝散叶疯长废墟上搭建起玻璃花房她将我的锈蚀谱成赞美诗在末日前跳最后一支圆舞曲桥段记得那夜萤火虫修补星光她锁骨泊着破碎的月亮说要用掌纹重新焊接时光让所有裂缝都流淌蜜糖"""
# SONG_LYRICS = """ 主aaaaaaaaaaaaaaaaaaaaaaaaaaaaaasdfsdafasdfs美诗"""

_coalesce_shortest_path_word_pattern = re.compile(
    r"(?:\[[^]]*\]\s*)?(?:['-]*[^\W\d_]+['-]*)+(?:\b|$)", re.UNICODE
)

aligned_chars = SONG_LYRICS * 10000

import time

start_time = time.time()
word_matches = list(_coalesce_shortest_path_word_pattern.finditer(aligned_chars))
end_time = time.time()
print(f"Time taken to find word matches (re): {end_time - start_time:.6f} seconds")
