Threadstarter: Regulärer Ausdruck für "String darf nicht vorkommen"

Was für einen regulären Ausdruck brauche ich, wenn ein String nicht vorkommen darf?

    1. negative assertions

      http://perldoc.perl.org/perlretut.html#Looking-ahead-and-looking-behind
      http://perldoc.perl.org/perlre.html#Look-Around-Assertions

      Ich glaube, dass ist nicht ganz das was ich suche. Ich möchte bestimmte Tags innerhalb von HTML-Code ersetzen. Ich will aber verhindern, dass wenn es zwei Tags mit einem Namen gibt, das zweite mit verschluckt wird. Also muss ich dafür sorgen, dass zwischen dem öffnenden und schließenden Tag beliebige Zeichen und Tags, aber kein öffnendes oder schließendes Tag einer bestimmten Sorte vorkommt (Es ist an dieser Stelle nicht schlimm, dass man dadurch keine gleichen Tags verschachteln kann.).

      1. Hi,

        Ich glaube, dass ist nicht ganz das was ich suche.

        Ich glaube, reguläre Ausdrücke sind es auch nicht:

        Ich möchte bestimmte Tags innerhalb von HTML-Code ersetzen.

        http://stackoverflow.com/a/1732454

        MfG ChrisB

        --
        RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
        1. Hi,

          Ich glaube, dass ist nicht ganz das was ich suche.

          Ich glaube, reguläre Ausdrücke sind es auch nicht:

          Ich möchte bestimmte Tags innerhalb von HTML-Code ersetzen.

          http://stackoverflow.com/a/1732454

          MfG ChrisB

          Ich glaube schon, dass es dafür eine Möglichkeit gibt. Ich habe so etwas auch schon manchmal in fremdem Code gesehen, nur nichts für diesen speziellen Fall gefunden (Da gab es nur Reguläre Ausdrücke, bei denen innerhalb des gesuchten Strings gar keine Tags vorkommen dürfen, bei mir soll wie gesagt jedoch nur ein ganz bestimmtes Tag verboten sein).

        2. Ich glaube, reguläre Ausdrücke sind es auch nicht:

          Gibt es denn eine andere Möglichkeit?

          1. Hallo,

            Ich glaube, reguläre Ausdrücke sind es auch nicht:
            Gibt es denn eine andere Möglichkeit?

            nutze einen HTML-Parser. Steht im verlinkten Thread :-)

            Freundliche Grüße

            Vinzenz

            1. Hallo,

              Ich glaube, reguläre Ausdrücke sind es auch nicht:
              Gibt es denn eine andere Möglichkeit?

              nutze einen HTML-Parser. Steht im verlinkten Thread :-)

              Freundliche Grüße

              Vinzenz

              Ich glaube nicht, dass es sich lohnt, einen HTML-Parser zu verwenden, um einen einzigen regulären Ausdruck zu ersetzen.

        3. Hallo,

          JavaScript-RegExps sind ziemlich mächtig, sodass man durchaus fiese Dinge damit tun kann. Beispielsweise Elemente durch einen anderen Typ ersetzen:

          function replacer (all, startTag, tagName, attributes, contents, endTag) {  
            var replacement = map[tagName];  
            if (replacement) {  
              return '<' + replacement + attributes + '>' + parse(contents) + '</' + replacement + '>';  
            } else {  
              return startTag + parse(contents) + endTag;  
            }  
          }  
          function parse (str) {  
            console.debug('parse', str);  
            return str.replace(/(<(\w+)([^>]*)>)(.*?)(<\/\2>)/g, replacer);  
          }  
          var map = {  
            i: 'em',  
            b: 'strong'  
          };  
          var str = '<p>bla <strong title="bar"><i>blub</i> foo <b style="font-weight: bold">sülz</b></strong> bar <div>xoxo</div></p>'  
          alert(parse(str));
          

          Natürlich ist das nicht sonderlich zuverlässig, aber das sind auch nur 12 Zeilen Code.

          Will man Entscheidungen anhand des Kontextes treffen, kommt man ohne einen Parsing-Stack nicht aus (wobei Rekursion sich ja gut dazu eignet, einen solchen auf- und abzubauen). Was nicht heißt, dass man reguläre Ausdrücke nicht dafür verwenden kann, einen Stack aufzubauen.

          Mathis

      2. Ich glaube, dass ist nicht ganz das was ich suche. Ich möchte bestimmte Tags innerhalb von HTML-Code ersetzen.

        Welche Tags willst du in welchem Tags durch was ersetzen?
        Zeig mal ein Beispiel.

        Mathias