2014-11-20 2 views
1

Это код from Python 2.7 HtmlParser:Является ли HtmlParser.entityref действительным регулярным выражением для сопоставления ссылок на объекты html?

entityref = re.compile('&([a-zA-Z][-.a-zA-Z0-9]*)[^a-zA-Z0-9]') 

Раньше я предполагал, что это будет больше похоже на это:

entityref = re.compile('&([a-zA-Z][-.a-zA-Z0-9]*);') 

так он поймал меня врасплох, на какие-то странные данные из какого-то странного источника ,

Мой прецедент не имеет значения; Есть ли какая-нибудь причина для определения ссылки на объект, например, HtmlParser?


неуместное использование случай: Если кто-нибудь чудо, я описываю свой потребительный случай, тем не менее. Пожалуйста, обратите внимание, что я больше не пытаюсь решить проблему. Мой вопрос в том, является ли сущностная ошибка HtmlParser ошибкой.

Мой вариант использования аналогичен следующему: Strip HTML from strings in Python

Входные данные я говорил о том, как это:

r'''<foo bar="blah"> asda&Il_'[email protected]_'<foo rab="halb">''' 

Намеченный выход из моего потребительной случае был бы r"""a&Il_'[email protected]_'""".


редактировать Я пытался сравнить регулярное выражение to this sgml reference и в моем понимании ссылки на сущность должен конца с ;, но я не знаком с этой темой, поэтому я хотел бы спросить.

+0

http://stackoverflow.com/questions/15532252/why-is-reg-being-rendered-as-%C2%AE-without-the-bounding-semicolon – n611x007

ответ

1

Синтаксическое производство для reference end гласит:

[61] reference end = 
    (refc | ; 
    RE) ? (13) CR 

Это означает, что следующий признаны в качестве опорного конца S:

  • эталонного Закрыть разделитель (; в опорном синтаксисе), как и ожидалось
  • A Завершено Окончание
  • Ничто (обратите внимание на использовании ? метасимвола после закрывающей скобки, а это означает, что оба REFC и RE является необязательными)

Если ничего используются в качестве опорного конца, ссылка заканчивается на первом Непро- после символа начала имени, как это требуется правилами эталонного режима распознавания, который был введен в разделительном ограничителе Entity Reference Open (ERO &).

Обратите также внимание на то, что ERO используется только для общего ссылочного производства сущности.

 Смежные вопросы

  • Нет связанных вопросов^_^