| (Web-) Design und webbasierte Sprachen Tipps & Tricks, Designabgleich, HTML & Javascript, Flash, ASP, PHP, Perl/CGI... |
Diskussion: regexp frage im Forum (Web-) Design und webbasierte Sprachen, in der Kategorie Web, Network & Multimedia Palace; Anzeige Hi, Habe folgendes in einem String: Code: Test [$variable:blalba] oder auch [funktion blabla] Ich will den Ihnalt in den ...
![]() |
| | #1 (permalink) |
| Anzeige Hi, Habe folgendes in einem String: Code: Test [$variable:blalba] oder auch [funktion blabla] Meine bisheige regexp sieht so aus: PHP-Code: Klarerweise darf ein escaptes \] hier nur am Ende der Klammern stehen, es soll aber überall stehen dürfen. Hoffe ihr verzeiht mir die lange Erklärerei ;) Wie baue ich also das ^\\\] in die erste Charactergruppe so ein, dass so ein \] überall stehen darf? Habe es schon mit Dingen wie [^\\\]\x00-\x5C\x5E-\xFF]* probiert, aber da scheitert es scheinbar daran, dass \ und ] ja 2 Zeichen sind; Ich müsste die irgendwie zusammenfassen können...in der PHP-Dokumentation habe ich darüber aber nichts finden können (http://at2.php.net/manual/de/referen...ern.syntax.php) Hoffe ihr wisst Rat. mfg visp | |
| | |
| | #2 (permalink) | |
| Administrator ![]() Registriert seit: 02.10.01 ![]() ![]() Likes: 30 | Zitat:
PHP-Code:
__________________ RL sux big time... auch 2012! Deleting pr0n is like killing your best friend [HaBo] bei Facebook - Werde Fan | |
| | |
| HaBOT | - Anzeige - |
| |
| | #3 (permalink) |
| Moderator ![]() | Also RegExen sind schon eine dolle Sache, man hackt ein paar Sonderzeichen in die Tastatur und es kommt ein gültiger Ausdruck raus. Nur lesen kann's keiner... Naja, Spaß beiseite, ich würde die Ausdrücke aber zumindest so einfach wie möglich fomulieren. Bei deinem komischen Ausdruck fange ich nicht mal an zu versuchen, da durchzusehen. Wenn du lediglich Inhalte in eckigen Klammern matchen willst, dann geht's das auch ganz primitiv mit einer Zeichenklasse "alles außer ...": PHP-Code: Nun willst du innerhalb der Klammer also auch noch eckige Klammern erlauben, solange sie denn escapet sind. Das wird so einfach nix, da du eben eine Bedingung einbauen müsstest, dass ein bestimmtes Zeichen nur erlaubt ist, wenn ein anderes direkt davor kommt. Als pragmatische Lösung würde ich hier einfach wählen, dass du alle Zeichenketten '\]' vor dem preg_replace_callback()-Aufruf durch ein anderes Zeichen ersetzt, welches sonst in dieser Zeichenkette nicht vorkommen darf. In etwa so: PHP-Code: |
| | |
| | #4 (permalink) |
| Moinsen, statt dem schon erwähnten str_replace verfahren könnte man auch die dafür gedachten regex funktionen nutzen ![]() Code: (?<!xxx) Negiert das angegebene Pattern und wirkt sich auf das nachfolgende aus. Beispiel: (?<!text1)text2 Trifft auf eine Zeichenkette zu, die "text2" enthält, aber nur, wenn "text1" nicht davor kommt. Code: \[(.*?)(?<!\\)\] MfG | |
| | |
| | #5 (permalink) |
| Themenstarter | Hi, vielen Dank für die Antworten Ich hab jetzt folgende Regexp genommen: Code: $regexp ='#[\\\]*\[(.*?)(?<!\\\)\]#s'; $string = preg_replace_callback($regexp, "callback", $string); mfg visp |
| | |
![]() |
| - Anzeige - | |
| |
| Themen-Optionen | |
| Ansicht | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| [RegExp] BBCode - [code]-Blöcke | rami | (Web-) Design und webbasierte Sprachen | 2 | 10.06.09 14:56 |
| RegExp Replacer Standardconsole App | Friedrich | Applikationen | 7 | 31.01.08 17:48 |
| [SOLVED!] MySQL REGEXP und das escapen runder Klammern.... | beavisbee | (Web-) Design und webbasierte Sprachen | 0 | 07.11.07 19:32 |
| JAVA: RegExp | Serow | Code Kitchen | 2 | 26.02.07 00:35 |