Секция lookbehind не имеет фиксированной длины. Это не имеет никакого отношения к +
в конце. Сторона lookbehind - (?<=image\\?c=)
. Вы скопировали это с C#. В C# регулярное выражение хочет искать буквенный знак вопроса. Это специальный символ в регулярном выражении, поэтому перед ним нужна обратная косая черта. Однако обратная косая черта является особенной в строках C#, так что обратная косая черта требует еще одной обратной косой черты, все просто представляют собой один знак вопроса.
В строках Delphi обратные косые черты не являются особыми, поэтому два из них рассматриваются как буквальная обратная косая черта для поиска в регулярном выражении. Вопросительный знак не экранируется, поэтому регулярное выражение Delphi рассматривает его как инструкцию, чтобы сделать буквальную обратную косую черту необязательной. Необязательный символ делает переменную длину lookbehind.
Чтобы решить эту проблему, просто удалите одну обратную косую черту.
Вы также можете удалить его перед кавычкой, но он не должен иметь никакого эффекта, поскольку кавычки не являются специальными в регулярном выражении.
Даже если вы используете HTML-парсер для идентификации элемента HTML, содержащего этот фрагмент URL-адреса, вам может понадобиться правильное регулярное выражение для распознавания того, какой элемент HTML является вашей целью.
Почему вы не используете парсер html? –
@DavidHeffernan есть ли у вас предложения? Раньше я ничего не слышал. Его третий день с html. –
http://stackoverflow.com/questions/2733972/best-lightweight-html-parser-for-delphi –