Zum Inhalt springen

regex übersteigt meine fähigkeiten


Empfohlene Beiträge

hi und hallo,

leider muss ich feststellen dass die regular expressions einfach meine fähigkeiten übersteigen, oder mir einfach nicht liegen. hab schon viel darüber gelesen und check die tutorials und erklärungen, wenns dann an selbermachen geht fehlt mir aber leider immer was.

ich möchte gerne folgendes:


in einem text sollen alle 

< durch <

und > durch >

ersetzt werden.

aber nur wenn die < und > nicht zu einen <a href="...>xxx</a> tag gehören.

auf deutsch:

alle html tags sollen als solche dargestellt werden, ähnlich der "code" funktion hier im forum.

aber <a> tags sollen wirklich links sein.

kann mir da jemand helfen?

vielen dank

Link zu diesem Kommentar
Auf anderen Seiten teilen

und wenn es ein <a> tag ist soll nix replaced werden...wo is die funktionalität??

Stimmt, daran hab ich gar nicht gedacht!

Ich überleg noch mal, poste wenn ich was habe.

[EDIT]

Gibt es denn irgendwelche Erkennungsmerkmal in deinem Text, ob es sich um ein Tag handelt oder nicht (zum Beispiel: bei Tags folgt direkt auf < ein Buchstabe, sonst ein Leerzeichen oder eine Zahl) ?

[/EDIT]

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ersetzung findet keine statt. Das ist das Suchmuster.

suchmuster: <(/?(?!a\s+)\w+(\s*\w*=["|'].+?["|'])*\s*/?)>

ersetzen: <\1> ggf. <\$1>

für php (ja ich weiss du nimmst keins):


$neu = preg_replace("{<(/?(?!a\s+)\w+(\s*\w*=["|'].+?["|'])*\s*/?)>}","<\$1>",$alt);
[/PHP]

ich hoffe mal, ich habe mich da jetzt nicht vertan

Der Link ist für .NET: http://msdn.microsoft.com/library/en-us/cpref/html/frlrfSystemTextRegularExpressionsRegexClassReplaceTopic.asp

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich habe etwas:

/(<[^a|\/])/si

findet alle <, denen kein "a" oder "/" direkt folgt

/(?<!<\/a|\")>/si

findet alle >, vor denen direkt kein </a und kein " steht

Das bedeutet auch, dass link-Tags immer so geschrieben werden müssen:

<a href="..">

</a>

(ohne Leerzeichen oder sonstiges hinter "<" bzw. vor ">")

und demzufolge einem >, das ersetzt werden soll, kein ",a oder A voransteht

Link zu diesem Kommentar
Auf anderen Seiten teilen

Seltsam, bei mir funktionierts einwandfrei. Aber es könnte vielleicht daran liegen, dass ich die preg-funktionen von PHP benutze und nicht ASP.


$parr = array("/(?<!<\/a|\")>/si","/(<[^a|\/])/si");
$rarr = array(">","<");
$text=<<<ENDTEXT
in einem text sollen alle
< durch <
und > durch >
ersetzt werden.
aber nur wenn die < und > nicht zu einen <a href="...">xxx</a> tag gehören.
ENDTEXT;

echo preg_replace($parr,$rarr,$text);
[/PHP]

ergibt:

[code] in einem text sollen alle <durch < und > durch > ersetzt werden. aber nur wenn die <und > nicht zu einen <a href="...">xxx</a> tag gehören. [/code]

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...