RE : Platzhalter für alle möglichen Zeichen (auch Sonderz.)

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
MacEvil
User
Beiträge: 52
Registriert: Mittwoch 21. Januar 2004, 21:40

RE : Platzhalter für alle möglichen Zeichen (auch Sonderz.)

Beitragvon MacEvil » Mittwoch 21. Januar 2004, 21:45

Hallo,

ich hab schon ewig rumprobiert, komm aber nicht drauf. Gibts eine Gruppe (sowie a-zA-Z0-9) für Sonderzeichen ? das mit dem "." geht irgenwie nicht
Milan
User
Beiträge: 1078
Registriert: Mittwoch 16. Oktober 2002, 20:52

Beitragvon Milan » Mittwoch 21. Januar 2004, 21:54

Nein, es gibt keine konkrete Gruppe. Aber du kannst die dir doch ganz leicht selebr zusammenstellen, einfach in [ ] Klammern schreiben, oder falls das zuviel ist, die nicht erwünschten Zeichen (halt die übrigen) ausschließen. (z.B.: [^a-zA-z0-9])

Was für einen Re möchtest du denn basteln?
Zuletzt geändert von Milan am Donnerstag 22. Januar 2004, 17:52, insgesamt 1-mal geändert.
MacEvil
User
Beiträge: 52
Registriert: Mittwoch 21. Januar 2004, 21:40

Beitragvon MacEvil » Donnerstag 22. Januar 2004, 14:08

Hm, also der zu suchende String sieht so aus :
<b><a href="/ordner/blbla">text</a></b><br><br>

RegExp : ">[alleZeichen]</a></b><br><br>"
aber jedes Auflisten ist ja mühsam..
HarryH
User
Beiträge: 266
Registriert: Freitag 23. Mai 2003, 09:08
Wohnort: Deutschland

Beitragvon HarryH » Donnerstag 22. Januar 2004, 14:15

Hallo MacEvil,

Was meinst du alles mit Sonderzeichen? Es gibt sehr, sehr viele.
Wenn du die auf der deutschen Tastatur üblichen meinst, hilft dir vielleicht das "string"-Modul weiter.
"string.punctuation" liefert folgende Zeichen:
!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~

"string.printable" liefert folgende Zeichen:
0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~

Du könntest sie z.B. so im "re"-Modul verwenden.

Code: Alles auswählen

import re
import string

s="C:\Dokume&nte und Einst^()'#ellu**ngen\All Users]\Dokumente\Hinz+Kunz"
var1=string.punctuation
find=re.findall("["+var1+"]",s)


Nachtrag: Leider kam mein Beitrag zu spät. Deswegen paßt er nicht mehr so ganz.
Zuletzt geändert von HarryH am Donnerstag 22. Januar 2004, 15:32, insgesamt 1-mal geändert.
Gruß, Harry
Benutzeravatar
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Beitragvon Dookie » Donnerstag 22. Januar 2004, 14:52

Hi MacEvil,

schau mal da http://python.sandtner.net/viewtopic.php?t=1094


Gruß

Dookie
Benutzeravatar
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Beitragvon Dookie » Donnerstag 22. Januar 2004, 15:06

ich seh grad, du willst ja nicht den Link sondern das was zwischen <a href=...> und </a> steht, dann lass doch alle Zeichen durch, die nicht "<" sind.

Code: Alles auswählen

"<a.*?href\s*=\s*[\"']?([^\s\"'>]+).*?>([^<]*)</a></b><br><br>"

Liefert Dir mit findall, eine Liste von Tuplen (linkziel,linktext) aller passenden Links.


Gruß

Dookie
MacEvil
User
Beiträge: 52
Registriert: Mittwoch 21. Januar 2004, 21:40

Beitragvon MacEvil » Freitag 23. Januar 2004, 12:36

@ Dookie :
Hm.. wenn ich es im Terminal ausführen will, wird nichts angezeigt, aber abbrechen kann ich auch nicht
Benutzeravatar
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Beitragvon Dookie » Freitag 23. Januar 2004, 12:46

wie/was im terminal ausführen?

Code: Alles auswählen

>>> import re
>>> regex = re.compile("<a.*?href\s*=\s*[\"']?([^\s\"'>]+).*?>([^<]*)</a></b><br><br>")
>>> text = '<b><a href="/ordner/blbla">text</a></b><br><br>'
>>> found = regex.findall(text)
>>> for t in found:
...     print t
...
('/ordner/blbla', 'text')



Gruß

Dookie

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder