Seite 1 von 1

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

Verfasst: Mittwoch 21. Januar 2004, 21:45
von MacEvil
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

Verfasst: Mittwoch 21. Januar 2004, 21:54
von Milan
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?

Verfasst: Donnerstag 22. Januar 2004, 14:08
von MacEvil
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..

Verfasst: Donnerstag 22. Januar 2004, 14:15
von HarryH
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.

Verfasst: Donnerstag 22. Januar 2004, 14:52
von Dookie
Hi MacEvil,

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


Gruß

Dookie

Verfasst: Donnerstag 22. Januar 2004, 15:06
von Dookie
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

Verfasst: Freitag 23. Januar 2004, 12:36
von MacEvil
@ Dookie :
Hm.. wenn ich es im Terminal ausführen will, wird nichts angezeigt, aber abbrechen kann ich auch nicht

Verfasst: Freitag 23. Januar 2004, 12:46
von Dookie
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