[JavaScript] RegExp .*?

Dieses Thema im Forum "Webentwicklung" wurde erstellt von Flyde, 19. Januar 2013 .

Schlagworte:
Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 19. Januar 2013
    RegExp .*?

    Abend,

    ich komm grad nicht weiter mit meinem regulären ausdruck, folgendes will ich parsen:

    HTML:
     <style type="text/css" id="application-code-css">
     /* APPCODE ID[foo] */
     .foo {}
     .bar {}
     .baz {}
     /* APPCODE_END */
     
     /* APPCODE ID[bar] */
     .baz {}
     /* APPCODE_END */
     </style>

    Dazu folgende js funktion
    HTML:
     this.findParseIdentifer = function(parseIdentifer) {
     var css = $( "#" + this.applicationCodeId ).html();
     var regex = new RegExp('\\/\\*.*APPCODE.*ID\\[' + parseIdentifer + '](.*\\s)*?\\/\\*.*APPCODE_END.*\\*\\/');
     var match = regex.exec(css);
     alert(match);
     }
    bzw. ohne die ganzen RegExp escapes:
    Code:
    \/\*.*APPCODE.*ID\[' + parseIdentifer + '](.*\s)*?\/\*.*APPCODE_END.*\*\/
    auf den anfangs angegebenen string komm ich mit diesem ausdruck und "foo" als parameter wert zum ergebnis:
    Code:
    /* APPCODE ID[foo] */
     .foo {}
     .bar {}
     .baz {}
     /* APPCODE_END */
     
     /* APPCODE ID[bar] */
     .baz {}
     /* APPCODE_END */
    jedoch kam ich auf Regex Tester auf das richtige ergebnis:
    Code:
    /* APPCODE ID[foo] */
     .foo {}
     .bar {}
     .baz {}
     /* APPCODE_END */
    in dem ich (hab ich so gegoogled, weiß nicht ob das der richtige begriff ist) ein ? bei (.*\s).* ? hinzugefügt habe (für non-greedy)

    jemand ne idee?
     
  2. 20. Januar 2013
    Zuletzt bearbeitet: 20. Januar 2013
    AW: RegExp .*?

    Code:
    /\/\*\s+APPCODE\s+ID\[\w+\]\s+\*\/\s*((?:\s+|.+)+?)\s*\/\*\s+APPCODE_END\s+\*\//;
    Bzw.:
    HTML:
    <<!DOCTYPE html>
    <script>
    var text = '<style type="text/css" id="application-code-css">\n\
     /* APPCODE ID[foo] */\n\
     .foo {}\n\
     .bar {}\n\
     .baz {}\n\
     /* APPCODE_END */\n\
     \n\
     /* APPCODE ID[bar] */\n\
     .baz {}\n\
     /* APPCODE_END */\n\
     </style>';
    
    function getSection(id, text) {
     var res = text.match(new RegExp('\\/\\*\\s+APPCODE\\s+ID\\[' 
     + id + '\\]\\s+\\*\\/\\s*((?:\\s+|.+)+?)\\s*\\/\\*\\s+A'
     + 'PPCODE_END\\s+\\*\\/'));
     
     return (res && res[1]) || false;
    }
    
    alert(getSection('foo', text));
    alert(getSection('bar', text));
    </script>
    
     
  3. 20. Januar 2013
    AW: RegExp .*?

    Code:
    ((?:\s+|.+)+?)
    das erschließt sich mir nicht ganz..
    wofür sorgt das ":"? habe danach gesucht aber nicht gefunden

    jedoch sagst du dort: (({0/1 was-auch-immer-:}{whitespaces 1-n} oder {any-char 1-n){1-n}{0/1}) - wie kann man das in worte fassen?

    funktioniert übrigens prima (was du natürlich schon wusstest )
     
  4. 21. Januar 2013
    Zuletzt bearbeitet: 21. Januar 2013
    AW: RegExp .*?

    Ich hab der Einfachheit halber \s statt \n genommen, weil ich mir nicht Sicher war ob . auch für \r steht.

    (?: ... ) nutzt man um einen Ausdruck zusammenzufassen, welcher nicht gespeichert werden soll.

    In Worten kann man den Ausdruck recht einfach definieren:

    ((?:\s+ | .+)+ ? )

    ((?:Leerraum ein oder mehrmals oder ein beliebiges anderes Zeichen ein oder mehrmals) ein oder mehrmals nicht gierig )


    Zum nachlesen:
    Regular Expressions - JavaScript | MDN
     
  5. 22. Januar 2013
    AW: RegExp .*?

    Hab mit ?: mal rum gespielt, klingt einleuchtend danke für die page, sehr hilfreich!

    Denke damit kann ich was anfangen.
    Close!
     
  6. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.