Лучший способ сопоставить и поймать дважды-символизированные сущности / ссылки?
Я говорю о таких вещах, как &
который затем будет отображать: &
когда это на самом деле должно оказать &
, В этом я спросил, как сопоставлять сущности, но кажется, что это невозможно или нереально с регулярными выражениями. Каков тогда лучший способ сопоставить двойные сущности?
РЕДАКТИРОВАТЬ: это хороший способ сделать это? .replace(/&(?=#?x?[0-9a-z]+);/i, '&');
(Я использую JavaScript)
3 ответа
Я бы пошел с
pattern &([a-zA-Z0-9]+?;)\1
replacement &$1
заменить только двойные усилители, или:
pattern &([#a-zA-Z0-9]+?;)
РЕДАКТИРОВАТЬ:
ваш образец
/&(?=#?x?[0-9a-z]+);/i
выглядит также хорошо для меня.
Примечание: ничто из этого не является чем-то, чему вы можете доверять
Сначала нормализуйте ваши данные. Используйте все, что вы знаете о кодировке, чтобы декодировать их обратно в форму, где символ / фрагмент данных имеет только одну возможную кодировку. После этого сопоставьте эти нормализованные данные с нормализованным шаблоном.