From 02095fcf816cf98993929a98882adaa30dcbbf43 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Mon, 5 Oct 2020 08:06:57 +0530 Subject: [PATCH] Bulk metadata search and replace: Fallback to V0 regex mode for expressions that dont parse with V1 --- src/calibre/gui2/dialogs/metadata_bulk.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/calibre/gui2/dialogs/metadata_bulk.py b/src/calibre/gui2/dialogs/metadata_bulk.py index b826711655..b2925fc03b 100644 --- a/src/calibre/gui2/dialogs/metadata_bulk.py +++ b/src/calibre/gui2/dialogs/metadata_bulk.py @@ -973,7 +973,7 @@ class MetadataBulkDialog(QDialog, Ui_MetadataBulkDialog): def s_r_paint_results(self, txt): self.s_r_error = None self.s_r_set_colors() - flags = regex.VERSION1 | regex.FULLCASE | regex.UNICODE + flags = regex.FULLCASE | regex.UNICODE if self.case_sensitive.isChecked(): flags |= regex.IGNORECASE @@ -983,9 +983,12 @@ class MetadataBulkDialog(QDialog, Ui_MetadataBulkDialog): if not stext: raise Exception(_('You must specify a search expression in the "Search for" field')) if self.search_mode.currentIndex() == 0: - self.s_r_obj = regex.compile(regex.escape(stext), flags) + self.s_r_obj = regex.compile(regex.escape(stext), flags | regex.V1) else: - self.s_r_obj = regex.compile(stext, flags) + try: + self.s_r_obj = regex.compile(stext, flags | regex.V1) + except regex.error: + self.s_r_obj = regex.compile(stext, flags) except Exception as e: self.s_r_obj = None self.s_r_error = e