Формулировка вашего вопроса неясна, и ваше регулярное выражение не имеет особого смысла, но если вы просто хотите сопоставить что-либо, похожее на тег HTML, это должно сделать это:
"<[^<>]+>"
Это будет соответствовать открывающим и закрывающим тегам (например, <tag attr="value">
и </tag>
).Если вы хотите сопоставлять только самозакрывающиеся теги (например, <tag />
), это должно сработать:
"<[^<>]+/>"
Другие считают, что косая черта (/
) имеет особое значение и должна быть экранирована, но это не правда.Если вы использовали Perl, вы можете использовать эту команду для подстановки:
s/<[^<>]+\/>/ /g
Но сам слеш не имеет особого значения;Мне нужно было только избежать этого, потому что я использовал его как разделитель регулярных выражений.Я мог бы так же легко использовать другой разделитель:
s~<[^<>]+/>~ ~g
Но R не поддерживает регулярные выражения на уровне языка, как это делает Perl;регулярное выражение и замена написаны в форме строковых литералов, так же, как они (например) в Java и C #.И в отличие от PHP, он не требует добавления разделителей в любом случае, как в:
preg_replace("/<[^<>]+\/>/", " ")
Но даже PHP позволяет вам выбирать свой собственный разделитель:
preg_replace('~<[^<>]+/>~', ' ')
Прежде чем кто-либо вызоветЯ знаю, что <[^<>]+>
имеет недостатки - на самом деле не существует такого понятия, как правильное регулярное выражение для тегов HTML.Это подойдет во многих случаях, но единственный действительно надежный способ разбора HTML - это специальный HTML-парсер.