Regular Expression Definition für mehrere Zeichen in einer Expression

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Regular Expression Definition für mehrere Zeichen in einer Expression

    Hi,

    ich habe folgenden String den ich in einer HTML-Tabelle darstelle:
    Wochenpauschale / Stück [1 wöchentlicher Wechsel]

    Leider sind die Spalten der Tabelle nicht breit genug und der Text bricht um und sieht dann wie folgt aus:
    Wochenpauschale / Stück [1
    wöchentlicher Wechsel]

    Also ganz unschön...

    Nun möchte ich, dass die [ und ] durch ein <span style="white-space:nowrap;"> und </span> ersetzt werden.

    Da die HTML-Ausgabe aus einem in XML-Definierten Template kommt möchte/ muss ich das ganze dynamisch halten.

    Kann ich und wenn ja wie, die oben genannte Idee umsetzen? Kann ich bei Objective-C/RegEx die Suche und die Ersetzung in einem String unter bringen?

    Danke schonmal.
  • Ich habe wie gesagt eine xml Datei die dafür zuständig ist die Inhalte als html zu generieren, in der xml würde ich dann sozusagen einen Parameter einfügen z.B. searchReplacePattern="hierMussRegexRein" und wenn dieser gesetzt ist dann wird der Wert durch die funktion gejagt und ersetzt eben meine eckigen Klammern :)

    Versteht man das?
  • Okay ich versuch es nochmal etwas ausführlicher was ich habe und wo ich hin möchte.

    Ich habe eine lokale XML-Datei, diese XML dient als Template für die Erzeugung einer "Website" letzendlich lasse ich den Inhalt aus der WebView aber auf ein PDF zeichnen. Also die XML-Datei dient als Bauanleitung für mein PDF.

    Ich habe folgenden XML-Block:

    HTML-Quellcode

    1. <contentPositions>
    2. <htmlabsolute key="JobItemUnitName" x="15" y="-2.0" width="6" color="#000000" fontSize="10.0" fontWeight="normal" onProductIndex="0" onOptionIndex="0" searchReplaceRegexPattern="XXXXX" />
    3. <htmlabsolute key="JobItemOptionName" x="10.5" y="-1.0" width="2" color="#000000" fontSize="10.0" fontWeight="normal" />
    4. <htmlabsolute key="JobItemCount" x="12.5" y="-1.0" width="2" color="#000000" fontSize="10.0" fontWeight="normal" />
    5. <htmlabsolute key="JobItemPricePerUnit" x="15" y="-1.0" width="6" color="#000000" fontSize="10.0" fontWeight="normal" />
    6. <htmlabsolute key="JobItemComment" x="0" y="-0.5" width="21" color="#666666" fontSize="10.0" fontWeight="normal" />
    7. </contentPositions>



    Im ersten htmlabsolute steht am Ende der Parameter "searchReplaceRegexPattern" diesen würde ich hinzufügen und den Wert daraus dann halt in meinem Parser verarbeiten wenn er gesetzt ist.
    Was ich nicht möchte ist das ganze auf 2 Parameter auszulagern also z.B.:


    HTML-Quellcode

    1. <contentPositions>
    2. <htmlabsolute key="JobItemUnitName" x="15" y="-2.0" width="6" color="#000000" fontSize="10.0" fontWeight="normal" onProductIndex="0" onOptionIndex="0" searchString="[" replaceString="<span>" />
    3. <htmlabsolute key="JobItemOptionName" x="10.5" y="-1.0" width="2" color="#000000" fontSize="10.0" fontWeight="normal" />
    4. <htmlabsolute key="JobItemCount" x="12.5" y="-1.0" width="2" color="#000000" fontSize="10.0" fontWeight="normal" />
    5. <htmlabsolute key="JobItemPricePerUnit" x="15" y="-1.0" width="6" color="#000000" fontSize="10.0" fontWeight="normal" />
    6. <htmlabsolute key="JobItemComment" x="0" y="-0.5" width="21" color="#666666" fontSize="10.0" fontWeight="normal" />
    7. </contentPositions>


    Hier müsste ich dann auch z.B. je einen Array unterbringen weil ich ja nach 2 unterschiedlichen Zeichen suchen muss und diese mit je etwas anderem ersetzen muss um mein HTML richtig zu erzeugen.


    HTML-Quellcode

    1. <contentPositions>
    2. <htmlabsolute key="JobItemUnitName" x="15" y="-2.0" width="6" color="#000000" fontSize="10.0" fontWeight="normal" onProductIndex="0" onOptionIndex="0" searchReplacePattern="[,]|<span>,</span>" />
    3. <htmlabsolute key="JobItemOptionName" x="10.5" y="-1.0" width="2" color="#000000" fontSize="10.0" fontWeight="normal" />
    4. <htmlabsolute key="JobItemCount" x="12.5" y="-1.0" width="2" color="#000000" fontSize="10.0" fontWeight="normal" />
    5. <htmlabsolute key="JobItemPricePerUnit" x="15" y="-1.0" width="6" color="#000000" fontSize="10.0" fontWeight="normal" />
    6. <htmlabsolute key="JobItemComment" x="0" y="-0.5" width="21" color="#666666" fontSize="10.0" fontWeight="normal" />
    7. </contentPositions>


    Das 3. Beispiel wäre eine komplett selber ausgedachte Lösung wie ich 2 Bereiche in diesem String unterbringen kann (Bereich durch | getrenn) und innerhalb von jedem Bereich mehrere Werte..

    Daher wäre eigentlich meine Idee das ganze mit Regex zu lösen, denn dort kann man meines Wissens nach in einer Zeichenfolge suchen und durch etwas ersetzen, nur leider steig ich bei dem RegEx Kram nicht durch bzw. es passiert nie das was ich mir erhoffe... zumal die [ die ich ersetzen muss in RegEx ja auch nicht einfach nur ein Zeichen ist..

    Ich hoffe es ist jetzt etwas verständlicher.

    Merci
  • Du musst dafür nach dem gesamten Klammerausdruck suchen, und im Ersetzungsausdruck eine Patternreferenz verwenden. Ungefähr so:
    Suchausdruck = \[([^\]]*)\] Ersetzungstext = <span style="white-space:nowrap;">\1</span>

    Die Patternreferenz kann anstelle von \1 auch $1 sein. Das hängt von der RE-Implementierung ab.
    „Meine Komplikation hatte eine Komplikation.“
  • Ich habe es mittlerweile hinbekommen - danke für die Tipps :)

    Das mit XSLT kannte ich noch nicht, ist denke ich für meinen Fall nicht ganz möglich, denn ich habe in meiner XML z.B. einen pageHeader und pageFooter und diesen kann (zumindest ging es damals nicht) ich nicht sauber über HTML implementieren. D.h. aus der XML werden teilweise HTML-Tags erzeugt um den Content darzustellen und aber auch direkt auf das Label gezeichnet um z.B. Header und Footer pro Seite darzustellen.