php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger

PHP Einsteiger PHP Problemlösungen für Spracheinsteiger
Archive: 2004, 2004/2, 2005, 2005/2, 2006, 2007, 2008, 2009, 2010,

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 28.12.2011, 12:01  
Neuer Benutzer
 
Registriert seit: 14.11.2011
Beiträge: 3
PHP-Kenntnisse:
Anfänger
benny52 befindet sich auf einem aufstrebenden Ast
Standard Regex: alles was nicht von Klammern umschlossen ist

Hallo,
Ich habe ein Problem betreffend eines regulären Ausdruckes:
Ich bin dabei einen kleinen Parser für mathematische Terme zu schreiben.
Bevor diese Ausdrücke geparst werden, sollen sie jedoch erst "normalisiert" werden.
z.B. wird aus "6*(3+2)" -> "{VAR(6)},{MULT},{BROPEN},{VAR(3}{PLUS}..."

dies mache ich über regex, funktioniert auch ganz gut:
PHP-Code:
        s s.replaceAll("\\(""{BROPEN}");
        
s.replaceAll("\\)""{BRCLOSE}");

        
//Operatoren
        
for (int op OPERATOR.getOperators()) {
            for (
String word OPERATOR.getWords(op)) {
                
s.replace(word"{" OPERATOR.getWords(op)[0] + "}");
                
            }
        }
        
//Nums'n'Vars
        
s.replaceAll("(([a-z,'_'])+)""{VAR($1)}");
        
s.replaceAll("(([0-9])+)""{NUM($1)}");

            
//Leerzeichen weg
        
s=s.replace(" """);
        
//Noch Kommas einfügen
        
s.replace("}{""},{"); 
Jetzt will ich aber auch einen Ausdruck der sowas macht:
"f(x)" -> "{FUNCTION(f,x)}"
Das ist ja ganz einfach, nur muss ich jetzt verhindern, dass jetzt die oberen Regeln wieder die Klammern im rechten Teil dieser Regel ersetzen.
Ich muss also die oberen Regeln anpassen, sodass sie nur dann ersetzen, wenn der zu-ersetzende Ausdruck noch nicht von geschweiften Klammern umgeben ist.
Geht sowas mit regex?

Grüße,
benny

P.S: das oben ist Java-Code, sollte für regex aber eigentlich keine Rolle spielen.
benny52 ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 28.12.2011, 12:57  
Erfahrener Benutzer
 
Benutzerbild von Arne Drews
 
Registriert seit: 22.04.2009
Beiträge: 3.486
PHP-Kenntnisse:
Anfänger
Arne Drews wird schon bald berühmt werdenArne Drews wird schon bald berühmt werden
Arne Drews eine Nachricht über Skype™ schicken
Standard

Sollte mit Negative Lookbehind- bzw. Negative Lookahead-Assertion funktionieren.
Code:
// xyz wird nur gefunden, wenn { davor nicht gefunden wurde:
(?<!\{)(xyz)

// xyz wird nur gefunden, wenn { danach nicht gefunden wurde:
(xyz)(?!\})

// xyz wird nur gefunden, wenn weder { davor noch } danach gefunden wurde:
(?<!\{)(xyz)(?!\})
__________________
Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt.
Probleme kann man niemals mit derselben Denkweise lösen, durch die sie entstanden sind.
Albert Einstein
Arne Drews ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] Regex: eckige Klammern ausschliessen PHPascal PHP Einsteiger 4 12.07.2011 11:41
Verschachtelte RegEx CoKeSiDe PHP Einsteiger 2 27.06.2011 22:10
[Erledigt] RegEx - Parse funktioniert in RegEx tool, preg_match findet nichts avaboo PHP Einsteiger 9 27.05.2011 13:42
RegEx für Youtube Kanalseite VideoID hjw-kunstwerk PHP Einsteiger 15 08.03.2011 15:58
Probleme bei einem einfachen Regex smilla PHP Einsteiger 5 14.12.2010 11:38
RegEx für E-Mails (preg_replace) N4bla PHP Tipps 2010 4 18.11.2010 21:53
[Erledigt] Kleine Regex Frage Bubelbub PHP-Fortgeschrittene 8 25.07.2010 23:39
regex um Klammern rauszufiltern wandasia PHP Tipps 2008 15 29.09.2008 16:50
2 Regex in PHP kompatible Syntax übersetzen NoiZy PHP-Fortgeschrittene 6 07.04.2008 09:04
Regex Link Problem Broadcast PHP Tipps 2008 2 29.02.2008 16:30
[gelöst :D ] regex tuts nur einmal pro zeile notyyy PHP Tipps 2008 17 24.09.2007 15:40
regex ohne fixpunkt? Dilandau PHP Tipps 2006 6 01.07.2006 00:35
habe ein paar fragen zu REGEX imported_kremser PHP Tipps 2006 11 31.01.2006 15:30
RegEx findet Stringvorkommen nicht PHP Tipps 2007 6 08.12.2005 21:52
Regex für attribute in quelltexten robo47 PHP Tipps 2005 6 27.01.2005 18:29

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
regexp nicht klammer, regex nicht umschlossen von, [ ] alles was in der klammer plus klammer löschen, php regex alles was nicht in \' \' steht, regex nicht in klammern, \eckige klammern auschliessen\, word replacer regex, regex klammern php, regex klammern erkennen, regexp klammern, php replace regex was nicht in klammer, php replace regex nach klammer, php reguläre ausdrücke in klammern ausschließen, regex umschlossen, regex klammern löschen, php suche string klammern ausschliessen, regular expression klammern entfernen php

Alle Zeitangaben in WEZ +2. Es ist jetzt 19:41 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum