Frage

Ich habe eine Zeichenfolge wie folgt:

This <span class="highlight">is</span> a very "nice" day!

Was soll meine RegEx-Muster in VB aussehen, um die Anführungszeichen im Tag zu finden? Ich möchte sie ersetzen mit etwas ...

This <span class=^highlight^>is</span> a very "nice" day!

So etwas wie <( ") [^>] +> funktioniert nicht: (

Danke

War es hilfreich?

Lösung

Es hängt von Ihrem regex Geschmack, aber das funktioniert für die meisten von ihnen:

"(?=[^<]*>)

EDIT: Für alle gespannt, wie das funktioniert. Dies schlägt sich in Englisch als „Finden Sie ein Zitat, das durch eine folgt>, bevor der nächste <“.

Andere Tipps

Regexes sind grundsätzlich schlecht bei der HTML-Analyse (siehe Können Sie einige Beispiele dafür, warum es schwierig ist, XML und HTML mit einer Regex zu analysieren? , warum). Was Sie brauchen, ist ein HTML-Parser. Siehe Können Sie ein Beispiel für das Parsen HTML mit Ihrem Lieblings-Parser? Beispiele unter Verwendung einer Vielzahl von Parsern.

Wenn Sie VB.net verwenden, sollten Sie in der Lage sein, einen href zu verwenden <= "https://stackoverflow.com/questions/773340/can-you-provide-an-example-of-parsing-html-with -Ihr-Favorit-Parser / 773769 # 773769" > HTMLAgilityPack .

Versuchen Sie diese: <span class="([^"]+?)?">

Dies sollte Sie den ersten Attributwert in einem Tag bekommen:

<[^">]+"(?<value>[^"]*)"[^>]*>

Wenn Sie Ihre Absicht, alle Anführungszeichen innerhalb von Tags zu ersetzen ist, können Sie den folgenden regulären Ausdruck verwenden:

(<[^>"]*)(")([^>]*>)

Das wird den Teil vor und nach dem Anführungszeichen isolieren. Beachten Sie, dass diese nicht versucht, Marken Öffnen und Schließen Zitat übereinstimmen. Es ist einfach paßt ein Anführungszeichen in einem Tag.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top