| 

.NET C# Java Javascript Exception

1
Hallo,

ich habe einen Html String in dem mehrfach folgende Sequence vorkommen kann:

...
<p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'>[[<span\r\nclass=SpellE>List:Doku</span>/Test/<span class=SpellE>BlaBlaBla|Just</span>\r\nanother Test]]<o:p></o:p></span>
...


Nun möchte ich mit den Regex erreichen, dass zwischen dem [[ und dem darauffolgenden ]] alle Htmltags gelöscht werden.

1) mit [[.*]] finde ich gar nichts
2) wenn ich z.B. nach <.*> suche erhalte ich auch immer alle Suchergebnisse mit der letzten > Klammer, also z.B. auch <span>blabla</span>, <span> und </span>, dabei möchte ich den ersten Treffer natürlich gar nicht haben

Als Ergebnis soll folgender String stehen bleiben:

...
<p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'>[[List:Doku/Test/BlaBlaBla|Just another Test]]<o:p></o:p></span>
...


Mit anderen dialekten der Regular Expressions komme ich dem Ergebnis schon sehr nah, .net kennt aber anscheinend den "non greedy" nicht

Hat jemand eine Expression für mich?

Danke
23.09.2011
LutzJ 1,3k 1 8
sorry, hab den falschen Beitrag editiert (aber wieder rückgängig gemacht)
WolfgangKluge 23.09.2011
3 Antworten
1
Für eine komplette Expression fehlt mir gerade die Zeit, aber zwei Tipps habe ich:


  • [[.*]] findet vermutlich deshalb nichts, weil [] Zeichenklassen begrenzen. Du mußt die Klammern also escapen: [[.*]]
  • non-greedy gibt es auch in .NET - mit einem Fragezeichen hinter dem Quantifyer. Z.B.

    *? - Entspricht dem vorangehenden Element nicht oder mehrmals, jedoch so wenige Male wie möglich. (MSDN)

23.09.2011
Matthias Hlawatsch 13,2k 4 9
Argh, und hier muß man Backslashes escapen, und Editieren geht immer noch nicht. Also gemeint war natürlich \[\[.*\]\]
Matthias Hlawatsch 23.09.2011
wie "editieren geht nicht"?
WolfgangKluge 23.09.2011
Ah OK, jetzt versteh ich es... muss aber am Inhalt liegen - ich hab zuerst die Frage (erfolgreich) editiert ;)
WolfgangKluge 23.09.2011
Siehe auch http://codekicker.uservoice.com/forums/21227-general/suggestions/2271509-serverfehler-beim-posten?ref=comments#comments

Bei mir sind seit gestern nachmittag ALLE Editierversuche gescheitert - verschiedene Antworten, verschiedener INhalt.
Matthias Hlawatsch 23.09.2011
Egal mit welchem Browser ich editiere - ich lande immer auf der codekicker Fehlerseite.
puls200 23.09.2011
1
Um mal wieder was zur Antwort beizutragen und nicht unnötig herum zu editieren ;)

[[.*]] ist das Gleiche wie [\[\.\*]\] (in Worten: eines der Zeichen "[" "." oder "*" und danach das Zeichen "]") und somit (wie von Matthias bereits geschrieben) nicht wirklich das gewünschte. Damit findest Du z.B. ".]" oder "*]" im Text.

\[\[.*?\]\]

oder
\[\[[^]]*\]\]

findet die gewünschten Textstellen, wobei letzteres etwas schneller ist, dafür aber nicht so genau. Den Unterschied sieht man bei der Suche nach
test[[hallo]welt]]test
23.09.2011
WolfgangKluge 1,0k 2 7
+1 Hab erst kurz überlegen müssen, warum "und danach das Zeichen "]"". Verführerische optische Symmetrie ;-)
Matthias Hlawatsch 23.09.2011
-1
Danke schon mal für die Antworten, aber wie bekomme ich es nun hin, dass die Tags zwischen den [[ und ]] entfernt werden. Da ich am WE nicht coden kann (bin unterwegs) habt Ihr auch noch ein wenig Zeit für eine Lösung ;-)
24.09.2011
LutzJ 1,3k 1 8
Hammerharte Regeln hier. Kaum macht man mal einen Scherz schon wird man abgestraft...
LutzJ 25.09.2011
Also ich hab den Minuspunkt nicht vergeben. Bin mir auch nicht sicher, ob er dem Inhalt galt oder dem "formalen Fehler", eine Erweiterung der Frage in eine Antwort zu stecken.
Aber viel zu coden gibt es da nicht, mobiles Internet hätte Dir völlig gereicht. Mit "msdn regex replace" führt Dich Google recht zielsicher zu
http://msdn.microsoft.com/de-de/library/xwewhkd1.aspx
Matthias Hlawatsch 26.09.2011

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH