php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2006

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 01.10.2006, 18:45  
Erfahrener Benutzer
 
Registriert seit: 03.07.2003
Beiträge: 292
PHP-Kenntnisse:
Fortgeschritten
dh1sbg
Standard reguläre Ausrücke

Hallo!

unter http://regexp-evaluator.de/tutorial/ habe ich ein recht gutes Tutorial mit Evaluator gefunden.

fyi

Trotzdem: Gibt es eine GUTE Zusammenfassung - so als Spickzettel? Ich arbeite nicht täglich mit regulären Ausdrücken - da wäre so was doch recht hilfreich

schönen Abend
Bruno
dh1sbg ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 01.10.2006, 19:08  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

http://www.regenechsen.de
Zergling-new ist offline  
Alt 01.10.2006, 19:10  
Erfahrener Benutzer
 
Registriert seit: 03.07.2003
Beiträge: 292
PHP-Kenntnisse:
Fortgeschritten
dh1sbg
Standard

gibt es ein Programm, das einen regulären Ausdruck lexikalisch analysiert?

Also im Prinzip "in menschliche Sprache" die Kurzschreibweise übersetzt?

Bruno
dh1sbg ist offline  
Alt 01.10.2006, 19:39  
Erfahrener Benutzer
 
Registriert seit: 03.07.2003
Beiträge: 292
PHP-Kenntnisse:
Fortgeschritten
dh1sbg
Standard

für mich zur Übung habe ich denin der PHP Dokumentation aufgeführten Ausrdruck vorgenommen:
a[\s]+[^>]*?href[\s]?=[\s\"\']+(.*?)[\"\']+.*?>([^<]+|.*?)?<\/a>

Daraus habe ich bis jetzt analysiert:
a[\s]+[^>]*?href
  • 1 a Buchstabe a
    2 [\s]+ ein oder mehrere Whitespaces
    3 [^>]* kein oder mehrere "nicht >"
    4 ? ein Zeichen
    5 href das Wort href

stimmt das?
Bruno
dh1sbg ist offline  
Alt 01.10.2006, 20:00  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Richtig. Das schwierige an solchen Ausdrücken ist eigentlich, dass sie eben unübersichtlich aussehen, aber wenn du sie zerpfriemelst, gehts.

Wenn du mal für dich einen RegExp schreiben willst, fang klein an. Schritt für Schritt mehr erkennen.
Zergling-new ist offline  
Alt 01.10.2006, 20:07  
Erfahrener Benutzer
 
Registriert seit: 03.07.2003
Beiträge: 292
PHP-Kenntnisse:
Fortgeschritten
dh1sbg
Standard

Hier meine Analyse. Ist die korrekt?
Code:
1     a            Buchstabe a
2     [\s]+        ein oder mehrere Whitespaces
3     [^>]*        kein oder mehrere "nicht >"
4     ?	          ein Zeichen
5     href         das Wort href
6     [\s]?        kein oder mehrere Leerzeichen
7     =            Zeichen =
8     [\s\"\']+    entweder ein oder mehrere mal: Leerzeichen, doppeltes oder einfaches Hochkomma
9     (.*?)
             ()    Suchpaatern, das gespeichert wird:
             .*    kein oder mehrere Zeichen
             ?     hier hebt das Fragezeichen die Gierigkeit der anderen Quantifizierer auf

10    [\"\']+      entweder ein oder mehrere mal:  doppeltes oder einfaches Hochkomma
11    .*?
             .*    kein oder mehrere Zeichen
             ?     hier hebt das Fragezeichen die Gierigkeit der anderen Quantifizierer auf
12    >            geschlossene spitze Klammer
13    ([^<]+|.*?)?
             ()    Suchpattern, das gespeichert wird
                   kann keinmal oder mehrfach vorkommen
             [^<]+ ein oder mehrere "nicht >"
             |     oder
             .*?   kein oder mehrere Zeichen
dh1sbg ist offline  
Alt 01.10.2006, 20:17  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Ja sieht richtig aus, wenn du mit Leerzeichen Whitespaces meinst, also auch Tabulatoren, Zeilenumbrüche etc.
Dein Wissen sollte an Theorie reichen
Zergling-new ist offline  
Alt 01.10.2006, 20:36  
Erfahrener Benutzer
 
Registriert seit: 03.01.2006
Beiträge: 253
CC84
Standard

stimmt nicht ganz, habs nur überflogen aber [\s]? bedeutet kein oder ein mal. nicht kein oder mehrmals und eben alles whitespaces.
CC84 ist offline  
Alt 01.10.2006, 20:57  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

und [^>]*? gehört auch zusammen (interpretation zeile 3 und 4) und bedeutet einen 'nicht gierigen' ausdruck für 0 oder mehrere zeichen die nicht > sind in folge. nicht gierig meint, daß reg. Ausdrücke im allgemeinen versuchen möglichst viele Zeichen hintereinander zuzuordnen...

13 ([^<]+|.*?)?
Suchpattern, das gespeichert wird kann keinmal oder einmal vorkommen
nikosch ist offline  
 


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


Alle Zeitangaben in WEZ +2. Es ist jetzt 14:13 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

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.