Извлечь все HTML-теги, закрытые с помощью выражения регулярных выражений - PullRequest
0 голосов
/ 24 марта 2012

Я работаю на R, и я хочу извлечь все закрытые теги HTML из простого текстового документа. Я использую метод gsub с регулярным выражением:

gsub("<?!([^<]/*)>"," ",fm,perl=TRUE,ignore.case=TRUE)

Но косая черта '/' не оценивается.


Я думаю, что я не очень ясно.

Вот что мне нужно сделать:

У меня есть текст (документ HTML), и я хочу сохранить только теги (<> и </>). Я думал, что использование gsub было бы хорошей идеей, но, возможно, у вас есть лучшее решение.

Ответы [ 2 ]

1 голос
/ 24 марта 2012

Формулировка вашего вопроса неясна, и ваше регулярное выражение не имеет особого смысла, но если вы просто хотите сопоставить что-либо, похожее на тег HTML, это должно сделать это:

"<[^<>]+>"

Это будет соответствовать открывающим и закрывающим тегам (например, <tag attr="value"> и </tag>).Если вы хотите сопоставлять только самозакрывающиеся теги (например, <tag />), это должно сработать:

"<[^<>]+/>"

Другие считают, что косая черта (/) имеет особое значение и должна быть экранирована, но это не правда.Если вы использовали Perl, вы можете использовать эту команду для подстановки:

s/<[^<>]+\/>/ /g

Но сам слеш не имеет особого значения;Мне нужно было только избежать этого, потому что я использовал его как разделитель регулярных выражений.Я мог бы так же легко использовать другой разделитель:

s~<[^<>]+/>~ ~g

Но R не поддерживает регулярные выражения на уровне языка, как это делает Perl;регулярное выражение и замена написаны в форме строковых литералов, так же, как они (например) в Java и C #.И в отличие от PHP, он не требует добавления разделителей в любом случае, как в:

preg_replace("/<[^<>]+\/>/", " ")

Но даже PHP позволяет вам выбирать свой собственный разделитель:

preg_replace('~<[^<>]+/>~', ' ')

Прежде чем кто-либо вызоветЯ знаю, что <[^<>]+> имеет недостатки - на самом деле не существует такого понятия, как правильное регулярное выражение для тегов HTML.Это подойдет во многих случаях, но единственный действительно надежный способ разбора HTML - это специальный HTML-парсер.

0 голосов
/ 24 марта 2012

это, вероятно, должно быть 'экранировано': \\/

...