Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

regex übersteigt meine fähigkeiten

Empfohlene Antworten

Veröffentlicht

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

ohhhhhh! jetzt fällts mir ein was noch fehlte:

das ganze brauch ich in einer ASP anwendung. die kennt keine strip_tags funktion, also brauch ich wirklich die richtige regex

sorry, stimmt schon normalerweise poste ich nur noch php-threads :rolleyes:


"/(<)/" ->  "<"

"/(>)/" -> ">"


"/(<)/" ->  "<"

"/(>)/" -> ">"

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

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]

wow...so viel ist das??? muss ich mich mal laaaaange hinsetzen und das checken.

mir ist aber noch nicht klar wie genau bzw. wo genau das ersetzen wirklich stattfindet. ich meine: wo genau wird das < durch < ersetzt?

mann ist das peinlich da gar keine ahnung zu haben...

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

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

danke ihr beiden für die grosse mühe die ihr euch gegeben habt. ich werde das gleich umsetzen!

@computercrustie

schade, mit deiner lösung klappts nicht, da ich ja an das schliessende > des "a" tags nicht rankomme:

<a href="test.html">test</a>

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]

etzadla ;) ja, da war er wieder der schlauch...

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.