diff --git a/youtube_dl/downloader/youtube_live_chat.py b/youtube_dl/downloader/youtube_live_chat.py
index 697e52550..4932dd9c5 100644
--- a/youtube_dl/downloader/youtube_live_chat.py
+++ b/youtube_dl/downloader/youtube_live_chat.py
@@ -28,8 +28,8 @@ class YoutubeLiveChatReplayFD(FragmentFD):
             return self._download_fragment(ctx, url, info_dict, headers)
 
         def parse_yt_initial_data(data):
-            window_patt = b'window\\["ytInitialData"\\]\\s*=\\s*(.*?);'
-            var_patt = b'var\\s+ytInitialData\\s*=\\s*(.*?);'
+            window_patt = b'window\\["ytInitialData"\\]\\s*=\\s*(.*?)(?<=});'
+            var_patt = b'var\\s+ytInitialData\\s*=\\s*(.*?)(?<=});'
             for patt in window_patt, var_patt:
                 try:
                     raw_json = re.search(patt, data).group(1)
diff --git a/youtube_dl/extractor/youtube.py b/youtube_dl/extractor/youtube.py
index e143bbee7..9fff8bdf4 100644
--- a/youtube_dl/extractor/youtube.py
+++ b/youtube_dl/extractor/youtube.py
@@ -1495,8 +1495,8 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
 
     def _get_yt_initial_data(self, video_id, webpage):
         config = self._search_regex(
-            (r'window\["ytInitialData"\]\s*=\s*(.*);',
-             r'var\s+ytInitialData\s*=\s*(.*?);'),
+            (r'window\["ytInitialData"\]\s*=\s*(.*?)(?<=});',
+             r'var\s+ytInitialData\s*=\s*(.*?)(?<=});'),
             webpage, 'ytInitialData', default=None)
         if config:
             return self._parse_json(