Не анализируйте HTML с помощью регулярных выражений, вместо этого используйте правильный анализатор HTML.
Согласно теории компиляции, HTML не может быть проанализирован с использованием регулярных выражений, основанных на конечном автомате . Из-за иерархического построения HTML вам необходимо использовать автомат выталкивания и управлять грамматикой LALR с помощью такого инструмента, как YACC .
вместо этого вам следует использовать правильный инструмент для правильной работы.
... и это задание для xmllint :
по сопоставление строк :
string="Sorcery"
xmllint --html --xpath "//p[contains(text(), '$string')]/text()" file_or_URL
по N-му
узлу, где N здесь 1:
xmllint --html --xpath "//p[1]/text()" file_or_URL
Проверьте https://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-conolated-tags
Я получил это из-за серверов имен моего интернет-провайдера в /etc/resolv.conf
. Эти серверы имен часто перегружены, и если обратный поиск DNS не удастся sshd
, соединение будет разорвано. Я решил проблему, используя более надежные серверы имен, например.8.8.8.8