Die Formulierung Ihrer Frage ist unklar, und Ihre regex macht nicht viel Sinn machen, aber wenn Sie wollen einfach nur etwas passen, die wie ein HTML-Tag sieht dies sollte es tun:
"<[^<>]+>"
, dass sowohl das Öffnen und Schließen-Tags entsprechen (zB <tag attr="value">
und </tag>
). Wenn Sie nur selbstschließenden Tags (z.B. <tag />
) übereinstimmen soll, sollte diese Arbeit:
"<[^<>]+/>"
Andere haben vorgeschlagen, dass der Schrägstrich (/
) besondere Bedeutung hat und sein entkommen muss, aber das ist nicht wahr. Wenn Sie Perl verwendet haben, können Sie diesen Befehl verwenden, um die Substitution zu tun:
s/<[^<>]+\/>/ /g
Aber der Schrägstrich selbst hat keine besondere Bedeutung; Ich musste nur entkommen, weil ich es als Regex-Begrenzer verwendete. Ich könnte genauso gut ein anderes Trennzeichen verwenden:
s~<[^<>]+/>~ ~g
Aber R nicht reguläre Ausdrücke in der Sprachebene unterstützen wie Perl tut; Die Regex und die Ersetzung werden in Form von String-Literalen geschrieben, genau wie sie (zum Beispiel) in Java und C# sind. Und im Gegensatz zu PHP, ist es erforderlich, dass Sie Trennzeichen hinzuzufügen, wie auch immer, wie in:
preg_replace("/<[^<>]+\/>/", " ")
Aber auch PHP können Sie Ihre eigene Trennzeichen wählen:
preg_replace('~<[^<>]+/>~', ' ')
Bevor jemand mich auf diese ruft Ich weiß, <[^<>]+>
ist fehlerhaft - dass es in der Tat nicht so etwas wie eine korrekte Regex für HTML-Tags gibt. Dies wird in vielen Fällen der Fall sein, aber die einzige wirklich zuverlässige Methode zum Analysieren von HTML ist ein dedizierter HTML-Parser.
Müssen Sie die '/' entkommen? – Cheetah
Ich stimme mit Ben überein, wenn dies geparst wird, da eine Perl-Regex nicht das '/' als Trennzeichen benutzt? –
http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#answer-1732454 – Axeman