Ich versuche 482,75 aus dem folgenden Text zu erhalten: <span id="yfs_l84_aapl">482.75</span>
Was bedeutet [^.] * Im regulären Ausdruck?
Die Regex I verwendet: regex = '<span id="yfs_l84_[^.]*">(.+?)</span>'
und es funktionierte.
Aber die Sache, die ich nicht verstehe, ist, warum [^.] * Kann aapl hier übereinstimmen? Mein Verständnis ist das. bedeutet jedes Zeichen außer einem Zeilenumbruch; und^bedeutet Negator. Also sollte [^.] Newline sein und [^.] * Sollte eine beliebige Anzahl neuer Zeilen sein. Diese Theorie widerspricht jedoch der realen Implementierung.
Jede Hilfe wird geschätzt und danke im Voraus.
Der Code Python I verwendet:
import urllib
import re
htmlfile = urllib.urlopen("http://finance.yahoo.com/q?s=AAPL&ql=0")
htmltext = htmlfile.read()
regex = '<span id="yfs_l84_[^.]*">(.+?)</span>'
pattern = re.compile(regex)
price = re.findall(pattern, htmltext)
print "the price of of aapl is", price[0]
Die Python-Dokumentation sagt sogar so explizit: [Sonderzeichen verlieren ihre besondere Bedeutung innerhalb von Mengen] (http://docs.python.org/2/library/re.html#regular-expression-syntax). – Evert
das stimmt nicht warum warum passt es 'aapl' – Anirudha
@Anirudh: Ja, tut es. –