Обратите внимание, что это не механизм регулярных выражений Java, который требует двойной обратной косой черты, а компилятор Java . Когда вы пишете следующее в исходном коде Java:
"(forumdisplay.php\\?.*page=%CURRENTPAGE%)"
компилятор Java интерпретирует это как строку:
(forumdisplay.php\?.*page=%CURRENTPAGE%)
Затем механизм регулярных выражений Java делает то же самое, что и другие механизмы регулярных выражений - знак вопроса (потому что он экранирован) трактуется буквально.
Похожая вещь происходит в Python - две строки ниже идентичны:
r"(forumdisplay.php\?.*page=%CURRENTPAGE%)"
"(forumdisplay.php\\?.*page=%CURRENTPAGE%)"
Используется нотация Python r
для «необработанной» строки, в которой обратный слеш не интерпретируется компилятором.