Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   [Python] Problem mit regulären Ausdrücken (https://www.delphipraxis.net/121006-%5Bpython%5D-problem-mit-regulaeren-ausdruecken.html)

cruso 20. Sep 2008 14:13


[Python] Problem mit regulären Ausdrücken
 
Hi,

ich habe ein kleines Problem mit einem regulären Ausdruck in Python...

Mit <link>((s?.*?).*?)</link>(?uism) bekommt man den Text der zwischen den <link>-Tags ist. Ich möchte aber nun nur die Tags, die von den <item>-Tags eingeschlossen sind...

Also folgendes:


<item>Hier steht irgend ein Text<link>Diesen Text brauche ich</link>Hier steht irgend ein Text</item>



MfG
Cruso

Valle 20. Sep 2008 14:18

Re: [Python] Problem mit regulären Ausdrücken
 
Vielleicht so (ungetestet)? Vorraussetzung ist da allerdings, dass im item-Tag möglichst kein anderer link- oder item-tag vorkommt. Das wird sonst wohl zu unvorhergesehenen Ergebnissen führen.

Code:
<link>.*<item>(.*)</item>.*</link>
Ansonsten vielleicht mal einen XML-Parser anwerfen?

Mit freundlichen Grüßen,

Valle

cruso 20. Sep 2008 14:22

Re: [Python] Problem mit regulären Ausdrücken
 
Zitat:

Zitat von Valle
Vielleicht so (ungetestet)? Vorraussetzung ist da allerdings, dass im item-Tag möglichst kein anderer link- oder item-tag vorkommt. Das wird sonst wohl zu unvorhergesehenen Ergebnissen führen.

Code:
<link>.*<item>(.*)</item>.*</link>
Ansonsten vielleicht mal einen XML-Parser anwerfen?

Mit freundlichen Grüßen,

Valle

Also der Code funktioniert irgendwie nicht...

Valle 20. Sep 2008 14:43

Re: [Python] Problem mit regulären Ausdrücken
 
Mh, ja ich muss zugeben, dass ich mit Python bisher wenig mit Regular Expressions gearbeitet habe. Aber dafür mit anderen Sprachen und eigentlich sollte der Code gehen.

Das hier geht bei mir:

Code:
#!/usr/bin/python

import re

s = "<item>Hier steht irgend ein Text<link>Diesen Text brauche ich</link>Hier steht irgend ein Text</item>"
r = "<item>.*<link>(.*)</link>.*</item>"

print re.compile(r, re.I+re.S).findall(s)
Mit freundlichen Grüßen,

Valle

cruso 20. Sep 2008 14:48

Re: [Python] Problem mit regulären Ausdrücken
 
Nun gut, es kann sein, dass es bei diesem einen Beispiel funktioniert... Nur beim Code auf http://www.netzeitung.de/export/news...n/internet.xml geht das ganze nicht... eigentlich sollten ja alle Strings zurückgeliefert werden...

Valle 20. Sep 2008 14:59

Re: [Python] Problem mit regulären Ausdrücken
 
XML/RSS-Parser!

Mit freundlichen Grüßen,

Valle

cruso 20. Sep 2008 15:18

Re: [Python] Problem mit regulären Ausdrücken
 
Es kann doch nicht die Lösung sein, immer wenn man ein (kleines) Problem hat einfach alles hinzuschmeißen und eine Fertiglösung zu nehmen... Zumal es hier ja nur an einer Codezeile liegt. Nur weil wir beide die Lösung nicht kennen, heißt das ja nicht, dass es keine Lösung gibt.

omata 20. Sep 2008 16:15

Re: [Python] Problem mit regulären Ausdrücken
 
Wieso genau anders herum :gruebel:
Zitat:

Zitat von Valle
Code:
<link>.*<item>(.*)</item>.*</link>

Müsste es nicht so aussehen...
Code:
<item>.*<link>(.*)</link>.*</item>
also so...
Code:
<item>.*?<link>((s?.*?).*?)</link>.*?</item>(?uism)

cruso 20. Sep 2008 16:18

Re: [Python] Problem mit regulären Ausdrücken
 
Zitat:

Zitat von omata
Wieso genau anders herum :gruebel:
Zitat:

Zitat von Valle
Code:
<link>.*<item>(.*)</item>.*</link>

Müsste es nicht so aussehen...
Code:
<item>.*<link>(.*)</link>.*</item>
also so...
Code:
<item>.*?<link>((s?.*?).*?)</link>.*?</item>(?uism)

Wow... mhm... ist mir gar nicht aufgefallen, dass das falsch herum war. :mrgreen:

Jedenfalls geht es so!!! Danke!!!


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:32 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz