Как объединить шаблоны регулярных выражений? - PullRequest
0 голосов
/ 17 декабря 2018

Я пытаюсь заменить текст в html-файле, используя словарь.

Это работает, но, к сожалению, не соответствует тексту, если он окружен html-тегом или рядом с ним запятая:

for key in dictionary:
    print(key)
    if key in answer_string:
        pattern = re.compile(key, re.IGNORECASE)
        answer_string = re.sub(r"[^ ]*"+pattern+r"[^ ]*", "<a href=\"" + dictionary.get(key) + "\">" + key + "</a>", answer_string)

Это то, что я пытался, но не работает.Я получаю ошибку: TypeError: cannot concatenate 'str' and '_sre.SRE_Pattern' objects

for key in dictionary:
    print(key)
    if key in answer_string:
        pattern = re.compile(key, re.IGNORECASE)
        answer_string = re.sub(r"[^ ]*"+pattern+r"[^ ]*", "<a href=\"" + dictionary.get(key) + "\">" + key + "</a>", answer_string)

1 Ответ

0 голосов
/ 17 декабря 2018

re.compile возвращает объект компиляции регулярного выражения, а не строку.Вам просто нужно объединить ваши строки перед компиляцией:

for key in dictionary:
    print(key)
    if key in answer_string:
        pattern = re.compile(r"[^ ]*"+key+r"[^ ]*", re.IGNORECASE)
        answer_string = pattern.sub("<a href=\"" + dictionary.get(key) + "\">" + key + "</a>", answer_string)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...