Zurück   Flashforum > Flash und Server > PHP und MySQL

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 22-05-2010, 10:24   #1 (permalink)
wuschelkopp
 
Registriert seit: Aug 2004
Beiträge: 1.468
RegExp einfacher ausdrücken

Heyho,

folgender RegExp funktioniert soweit schön:

PHP-Code:
$pattern '~<tr class="(odd|even)Row">\s*<td>(.*)</td>\s*<td>(.*)</td>\s*<td class="paperTitle">(.*)</td>\s*<td>(.*)</td>\s*<td>(.*)</td>\s*</tr>~Uis'
und nun wollte ich ihn vereinfachen, aber sobald ich das so mache, matcht er mir nicht mehr die einzelnen Spalten (das zwischen <td> und </td>):

PHP-Code:
$pattern '~<tr class="[a-z]*">(\s*<td[^>]*>(.*)</td>){5}\s*</tr>~Uis'
eigentlich steht doch das gleiche da, oder? Auch ein <td.*> statt <td[^>]> funktioniert nicht.

Bin gerade etwas überfragt. Vllt kann ja jmd nachhelfen, danke schonmal!
__________________
listening to techno & minimal :>
firstlord18 ist offline   Mit Zitat antworten
Alt 22-05-2010, 10:51   #2 (permalink)
~~~~~~~~~~~~
 
Benutzerbild von _geo_
 
Registriert seit: May 2002
Ort: AUSTRIA (OÖ)
Beiträge: 3.298
Ich nehmen mal an du willst den <tr>lalala irgendwas </tr> auslesen, dann versuchs mal mit:

Code:
< *tr[^>]*>.*?< */tr[^>]*>
Test Text:
Code:
 <table>asdf asfd safd <tr class="asdasd"><td> asdlkja sd<> </td> <td> asdasdj fasad <td> </td></tr> asdflaks jfdalsdf  dsf</table>
Der Wichtige Punkt hier ist das ".*?", dass ist das NON-GREEDY ".*".

Regular Expression HOWTO

Testen kannst du deine regExp für Flash übrigends sehr einfach auf: RegExr: Online Regular Expression Testing Tool

lg
__________________
--- :P ---

Blog
Bei unerwünschten Nebenwirkungen zerreißen Sie die Packungsbeilage oder erschlagen ihren Arzt oder Apotheker
_geo_ ist offline   Mit Zitat antworten
Alt 22-05-2010, 11:16   #3 (permalink)
wuschelkopp
 
Registriert seit: Aug 2004
Beiträge: 1.468
Danke erstmal. Das ungreedy für .* habe ich mittels dem Modifier "U" geregelt. Ich möchte nicht nur den Inhalt zwischen <tr> und </tr> auslesen, sondern den Inhalt der 5 einzelnen Spalten (<td>...</td>). Daher habe ich das ja einmalig als Gruppe definiert und danach mittels Quantifier auf {5}-faches vorkommen gesetzt. Aber das klappt seltsamerweise ja nicht.
__________________
listening to techno & minimal :>
firstlord18 ist offline   Mit Zitat antworten
Alt 22-05-2010, 11:41   #4 (permalink)
~~~~~~~~~~~~
 
Benutzerbild von _geo_
 
Registriert seit: May 2002
Ort: AUSTRIA (OÖ)
Beiträge: 3.298
Also:

Code:
asd asd asd 
<table>
<tr>
<td>Der Inhalt hier ist gefragt 1 <> ?</td>
<td>Der Inhalt hier ist gefragt 2 <> ?</td>
<td class="paperTitle">Der Inhalt hier ist gefragt 3 <> ?</td>
<td>Der Inhalt hier ist gefragt 4 <> ?</td>
<td>Der Inhalt hier ist gefragt 5 <> ?</td>
</tr>
</table>
asd asd adASDASD
?
__________________
--- :P ---

Blog
Bei unerwünschten Nebenwirkungen zerreißen Sie die Packungsbeilage oder erschlagen ihren Arzt oder Apotheker

Geändert von _geo_ (22-05-2010 um 13:23 Uhr)
_geo_ ist offline   Mit Zitat antworten
Alt 22-05-2010, 11:58   #5 (permalink)
wuschelkopp
 
Registriert seit: Aug 2004
Beiträge: 1.468
ja, nur dass dort jeweils <td> stehen sollte und der 3. td-block die css-klasse "paperTitle" besitzt
__________________
listening to techno & minimal :>
firstlord18 ist offline   Mit Zitat antworten
Alt 22-05-2010, 12:05   #6 (permalink)
~~~~~~~~~~~~
 
Benutzerbild von _geo_
 
Registriert seit: May 2002
Ort: AUSTRIA (OÖ)
Beiträge: 3.298
argl stimmt copy paste Fehler sry, habs ausgebessert ^^

Sind in dem Text noch mehr <tr> s etc. also is der tr tag dessen tds du haben willst irgendwie gekennzeichnet?

edit:

Habs jetzt mit:
Code:
$regexp = '|(<\s*tr[^>]*>(.*<td>(.*)</td>.*)*<\s*/tr[^>]*>)|Uis';
versucht, hatte aber damit auch keinen Erfolg, sry.
__________________
--- :P ---

Blog
Bei unerwünschten Nebenwirkungen zerreißen Sie die Packungsbeilage oder erschlagen ihren Arzt oder Apotheker

Geändert von _geo_ (22-05-2010 um 13:22 Uhr)
_geo_ ist offline   Mit Zitat antworten
Alt 22-05-2010, 15:49   #7 (permalink)
wuschelkopp
 
Registriert seit: Aug 2004
Beiträge: 1.468
ja ich frage mich halt, wieso der 2. regexp nicht das gleiche ist wie mein 1.! ich habe ja, anstatt 5 mal den term

\s*<td>(.*)</td>

hinzuschreiben, einfach einmal

(\s*<td>(.*)</td>){5} geschrieben, müsste ja eigentlich passen oO

edit: habe den code, in dem ich das gebraucht hätte, eh schon anders gelöst, aber rein aus interesse würds mich halt trotzdem interessiern oO
__________________
listening to techno & minimal :>
firstlord18 ist offline   Mit Zitat antworten
Alt 22-05-2010, 16:23   #8 (permalink)
Keine Panik
 
Registriert seit: Apr 2010
Ort: Düsseldorf (im ernst)
Beiträge: 1.868
weil es bedeutet, dass die Passage zwischen den Klammern 5x hintereinander vorkommen muss, er aber nur 1 Ergebniswert dafür zurückgibt.
vermutlich den ersten oder letzten fund.
=> 1 ergebnis / Klammerpaar (für jeden Treffer des Reg. gesamtausdruckes)
__________________
greetz Thomas

plz RTFM & Coding Conventions
thomas_E ist offline   Mit Zitat antworten
Alt 22-05-2010, 22:13   #9 (permalink)
wuschelkopp
 
Registriert seit: Aug 2004
Beiträge: 1.468
kannst du das nochmal erklären? was meinst du damit, dass es trotz den 5 vorkommnissen nur ein ergebnispaar gibt?
__________________
listening to techno & minimal :>
firstlord18 ist offline   Mit Zitat antworten
Alt 22-05-2010, 23:09   #10 (permalink)
Keine Panik
 
Registriert seit: Apr 2010
Ort: Düsseldorf (im ernst)
Beiträge: 1.868
String:
PHP-Code:
vorher
abc
<br/>
abc<br/>
abc<br/>
dahinter 
PHP-Code:
Regexp: ~(a.*<br/>)~
// .* is greedy
// eine Ergebnis mit
=> abc<br/>abc<br/>abc<br/> 
PHP-Code:
Regexp: ~(a.*?<br/>){3}~
// .* is ungreedy
// ebenso, ein Ergebnis, auch wenn er hier 3x darüber stolpert
=> abc<br/> 
nochmal zusammengefasst: eine Klammer, ein Ergebnis.
der multiplikator gibt nur an, dass der gesuchte ausdruck mehrmals hintereinander vorkommen muss. (zumindest in PHP, JS und Flash) gibt er hier aber nur ein Ergebnis dafür zurück.
ich weiss nicht, wie ich es besser erklären soll.
__________________
greetz Thomas

plz RTFM & Coding Conventions
thomas_E ist offline   Mit Zitat antworten
Alt 22-05-2010, 23:30   #11 (permalink)
wuschelkopp
 
Registriert seit: Aug 2004
Beiträge: 1.468
achso nun hab ichs. ich dachte aber, dass es zwar für die große klammer nur ein ergebnis zurückgibt, aber dafür für die darin vorkommenden klammern (klammer innerhalb der klammer) jeweils ein eigenes ergebnis. aber okay, danke, dann hab ichs nun glaub..
__________________
listening to techno & minimal :>
firstlord18 ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

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

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


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
frames in Uhrzeit ausdrücken Babaluba Flash MX 7 18-08-2006 00:23
Kann man division durch rekursion ausdrücken? Samuel Am Rande 7 04-11-2003 17:12
regexp as2 foobaz Softwarearchitektur und Entwurfsmuster 8 27-09-2003 07:59
Regexp beachmeat PHP und MySQL 5 21-09-2003 18:27
anders ausdrücken? dreck ActionScript 1 8 18-03-2003 15:32


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:27 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele