--- a/eric6/WebBrowser/AdBlock/AdBlockRule.py Sat Oct 10 16:03:53 2020 +0200 +++ b/eric6/WebBrowser/AdBlock/AdBlockRule.py Sun Oct 11 17:54:52 2020 +0200 @@ -7,12 +7,10 @@ Module implementing the AdBlock rule class. """ - import re - from enum import IntEnum -from PyQt5.QtCore import Qt, QRegExp +from PyQt5.QtCore import Qt from PyQt5.QtWebEngineCore import QWebEngineUrlRequestInfo @@ -276,8 +274,10 @@ if parsedLine.startswith("/") and parsedLine.endswith("/"): parsedLine = parsedLine[1:-1] self.__type = AdBlockRuleType.RegExpMatchRule - self.__regExp = QRegExp(parsedLine, self.__caseSensitivity, - QRegExp.RegExp) + if self.__caseSensitivity: + self.__regExp = re.compile(parsedLine) + else: + self.__regExp = re.compile(parsedLine, re.IGNORECASE) self.__stringMatchers = self.__parseRegExpFilter(parsedLine) return @@ -302,12 +302,14 @@ return # If there is still a wildcard (*) or separator (^) or (|), - # the rule must be modified to comply with QRegExp. + # the rule must be modified to comply with re. if "*" in parsedLine or "^" in parsedLine or "|" in parsedLine: self.__type = AdBlockRuleType.RegExpMatchRule pattern = self.__convertPatternToRegExp(parsedLine) - self.__regExp = QRegExp(pattern, self.__caseSensitivity, - QRegExp.RegExp) + if self.__caseSensitivity: + self.__regExp = re.compile(pattern) + else: + self.__regExp = re.compile(pattern, re.IGNORECASE) self.__stringMatchers = self.__parseRegExpFilter(parsedLine) return @@ -505,7 +507,7 @@ if not self.__isMatchingRegExpStrings(encodedUrl): matched = False else: - matched = self.__regExp.indexIn(encodedUrl) != -1 + matched = self.__regExp.search(encodedUrl) is not None elif self.__type == AdBlockRuleType.MatchAllUrlsRule: matched = True @@ -1153,10 +1155,11 @@ @return tuple containing the regular expression and the list of string matchers - @rtype tuple of (QRegExp, list of str) + @rtype tuple of (re.Pattern, list of str) """ if self.__regExp is not None: - return (QRegExp(self.__regExp), self.__stringMatchers[:]) + return (re.compile(self.__regExp.pattern), + self.__stringMatchers[:]) else: return (None, [])