Лучший способ сопоставить и поймать дважды-символизированные сущности / ссылки?

Я говорю о таких вещах, как & который затем будет отображать: & когда это на самом деле должно оказать &, В этом я спросил, как сопоставлять сущности, но кажется, что это невозможно или нереально с регулярными выражениями. Каков тогда лучший способ сопоставить двойные сущности?

РЕДАКТИРОВАТЬ: это хороший способ сделать это? .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

выглядит также хорошо для меня.

Примечание: ничто из этого не является чем-то, чему вы можете доверять

Сначала нормализуйте ваши данные. Используйте все, что вы знаете о кодировке, чтобы декодировать их обратно в форму, где символ / фрагмент данных имеет только одну возможную кодировку. После этого сопоставьте эти нормализованные данные с нормализованным шаблоном.

Возможно:

&[a-zA-Z]+;

Хотя не дурак.

Другие вопросы по тегам