Ramiel Geschrieben 24. Februar 2009 Geschrieben 24. Februar 2009 Hallo ihr! So wie der Titel schon sagt suche ich hilfe bei Regulären Ausdrücken. Also das man z.b bb-code in html code umwandelt. fangen wir mal an: ^[a-z]$ //stimmt mit jedem einzelnne buchstaben in kleinschreibung überein aber wieso benötige ich dafür ^ und $ schließlich sagt die klammer das sowieso bana?na //stimmt mit banana und banna überein aber nicht mit banaana . wieso den? fragezeichen heist doch es ist egal was für ein zeichen davor steht. vielleicht kann mir das jemand noch mit * und + erklären. ba(na|ni)+ //stimt mit bana und banina aber nicht mit naniba überein wozu benötige ich hier schon wieder das + ich bracuh doch nur | damit ich eine alternative erschaffe. PS: ok ich weis selbst das ich nicht gerade gut geschrieben habe aber ich weis nicht wie ich es besser ausdrücke Zitieren
bmg4ever2 Geschrieben 24. Februar 2009 Geschrieben 24. Februar 2009 ^[a-z]$ //stimmt mit jedem einzelnne buchstaben in kleinschreibung überein Diese Regex stimmt nur mit einem String überein, welcher nur einen einzigen Buchstaben enthält, welcher dann auch noch kleingeschrieben ist. ^ und $ sind die Begrenzer für Stringanfang und Stringende, was in der Regex bedeudet, dass der String mit diesem Buchstaben anfängt und auch aufhört. bana?na //stimmt mit banana und banna überein aber nicht mit banaana . wieso den? fragezeichen heist doch es ist egal was für ein zeichen davor steht. klar ist egal was für ein Zeichen vor dem Fragezeichen steht, aber das Fragezeichen bezieht sich auch auf selbiges. "a?" bedeutet in der Regex konkret, dass an dieser Stelle genau EIN oder GARKEIN "a" vorkommt. "+" wäre, dass das a mindestens einmal vorkommt. "*" wäre, dass das a keinmal oder beliebig oft vorkommt. ? / + / * sind also Quantifizierer und beziehen sich entweder auf das einzelne Zeichen davor, oder auf einen voranstehenden geklammerten Ausdruck. ba(na|ni)+ //stimt mit bana und banina aber nicht mit naniba überein wozu benötige ich hier schon wieder das + ich bracuh doch nur | damit ich eine alternative erschaffe. Das + sagt in diesem Fall einfach aus, dass deine Alternative "na" oder "ni" mehrmals vorkommen darf nach einem anfänglichen ba, aber ein "na" ODER ein "ni" muss mindestens vorkommen. PS: ok ich weis selbst das ich nicht gerade gut geschrieben habe aber ich weis nicht wie ich es besser ausdrücke Geht mir oft auch so Ich hoffe du verstehst meinen Gehirndünschiss, den ich jetzt mal Antwort nenne Zitieren
Ramiel Geschrieben 24. Februar 2009 Autor Geschrieben 24. Februar 2009 hm danke erstmal, schaun ob ichs verstanden habe ba(na)+na würde in diesem fall bedeuten das banana und bananana und banananana geht weil es ja beliebig oft vorkommen darf aber mindestens einmal. richtig? ^[a-zA-Z]+$ würde bedeuten das im string mindestens ein buchstabe vorkommen muss ob gros oder klein wegen dem + aber eigentlich brauche ich ^ und $ doch gar nicht Zitieren
bmg4ever2 Geschrieben 24. Februar 2009 Geschrieben 24. Februar 2009 hm danke erstmal, schaun ob ichs verstanden habe ba(na)+na würde in diesem fall bedeuten das banana und bananana und banananana geht weil es ja beliebig oft vorkommen darf aber mindestens einmal. richtig? 100 / 100 punkten ^[a-zA-Z]+$ würde bedeuten das im string mindestens ein buchstabe vorkommen muss ob gros oder klein wegen dem + aber eigentlich brauche ich ^ und $ doch gar nicht richtig und falsch ( sry musste sein ) Also erstmal hast du recht mit dem, was diese regex aussagt. mind. ein Buchstabe muss in dem String vorkommen, ABER es darf auch NICHTS anderes vorkommen als Buchstaben. Was du z.B. meinst wäre ja [a-zA-Z]. Selbiges matched wenn irgendwo im Vergleichsstring mindestens ein Buchstabe vorkommt. Dennoch sind beide Regexes von der Aussage her verschieden, denn bei ^[a-zA-Z]+$ darf kein anderes Zeichen als ein Buchstabe im String vorkommen, da der String ja mit dem einen oder den mehreren Buchstaben anfängt und aufhört. Bei [a-zA-Z] darf auch iwo vor oder nach dem Buchstaben noch ein Leerzeichen, eine Ziffer oder was auch immer vorkommen. Zitieren
Ramiel Geschrieben 24. Februar 2009 Autor Geschrieben 24. Februar 2009 ^[a-zA-Z]+$ aber wieso denn + heist doch nur das es min einma vorkommen muss aber das nichts anderes drin sein darf steht da doch nirgends Zitieren
bigvic Geschrieben 24. Februar 2009 Geschrieben 24. Februar 2009 (bearbeitet) ^$ OK: "" Not OK: " ", "x", ... ^a$ OK: "a" Not OK: " a ", " a", "ba", ... [a]+ OK: "a", "asdnsdfnsfklsdlf", " 4224 2a asdfas asd", Not OK: "bcd", "", "2344 dfd"[ ^[a]+$ OK: "a", "aaaaaaaa", "aaa", Not OK: " a", "a ", "abc" Regulärer Ausdruck ? Wikipedia Bearbeitet 24. Februar 2009 von bigvic Zitieren
Ramiel Geschrieben 24. Februar 2009 Autor Geschrieben 24. Februar 2009 ok dann heist ^$ nur das keine sonderzeichen vorkommen dürfen Zitieren
bigvic Geschrieben 24. Februar 2009 Geschrieben 24. Februar 2009 nein, das bedeutet es nicht - siehe meine Beispiele. ^=Zeilenanfang $=Zeilenende Zitieren
Ramiel Geschrieben 24. Februar 2009 Autor Geschrieben 24. Februar 2009 aber das sagen deine beispiele doch aus! ^$ OK: "" Not OK: " ", "x", ... ^a$ OK: "a" Not OK: " a ", " a", "ba", ... Zitieren
bigvic Geschrieben 24. Februar 2009 Geschrieben 24. Februar 2009 aber das sagen deine beispiele doch aus! ^$ OK: "" Not OK: " ", "x", ... ^a$ OK: "a" Not OK: " a ", " a", "ba", ... Ist x ein Sonderzeichen, sind ba Sonderzeichen? Regulärer Ausdruck ? Wikipedia Zitieren
Ramiel Geschrieben 24. Februar 2009 Autor Geschrieben 24. Februar 2009 für mich sind leerzeichen sonderzeichen Zitieren
bigvic Geschrieben 24. Februar 2009 Geschrieben 24. Februar 2009 Für mich auch, "a", "b" und "x" sind für mich Buchstaben und keine Sonderzeichen Aber wenn du nicht mal auf den Wikilink klicken willst, wo das alles beschrieben steht, dann darf nun ein andere weiter machen - over and out Zitieren
Ramiel Geschrieben 24. Februar 2009 Autor Geschrieben 24. Februar 2009 nein ist mir schon klar was du meinst Zitieren
Ramiel Geschrieben 24. Februar 2009 Autor Geschrieben 24. Februar 2009 text =banana text = eregi_replace("(.*)(nana)", "\\2\\1", text"); gibt nanaba aus aber wieso? \\2 zeigt auf die zweite klammer nana aber wieso ist \\1 ba ? Zitieren
unbenannt Geschrieben 25. Februar 2009 Geschrieben 25. Februar 2009 . matched (fast) alle Zeichen * bedeuted "keins oder beliebig viele" Im Falle Deines Teststrings matched dies natürlich alles bis zu "nana". Das ist übrigens ein schöner Zeitpunkt, Dich mit gierigen und genügsamen Suchmustern zu befassen. Erweitere Deinen Teststring einfach mal um ein weiteres "nana" Zitieren
Mr Unix Geschrieben 28. Februar 2009 Geschrieben 28. Februar 2009 Also das man z.b bb-code in html code umwandelt. Das willst du nicht wirklich von Hand machen? Da gibt's bestimmt schon vorgebaute Sachen. Wenn du es von Hand machen willst, dann denk' bitte mal ueber lexialische Analyse deiner Daten nach. Auch da gibts bestimmt schon vorgefertigte Module. PS: ok ich weis selbst das ich nicht gerade gut geschrieben habe aber ich weis nicht wie ich es besser ausdrücke Ich komm grade von ner Party, die seit gestern um sieben am Laufen war und weiss auch nicht wie ich mich ausdruecken soll, aber wenn es dir nur um das Verstehen von Regulaeren Ausdruecken geht, dann ist das die Seite: Etext Center: Services Hast du die Seite verstanden, ist der Rest nur noch nachschlagen. Gute Nacht Unix Zitieren
Ramiel Geschrieben 1. März 2009 Autor Geschrieben 1. März 2009 so danke an alle helfenden! und mr unix. mir geht es um das verstehen danke. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.