Tôi đang cố gắng lấy 482,75 từ văn bản sau: <span id="yfs_l84_aapl">482.75</span>
[^.] * Có nghĩa là gì trong biểu thức chính quy?
Regex tôi đã sử dụng là: regex = '<span id="yfs_l84_[^.]*">(.+?)</span>'
và nó hoạt động.
Nhưng điều tôi không hiểu là tại sao [^.] * Có thể khớp với aapl ở đây? Sự hiểu biết của tôi là vậy. có nghĩa là bất kỳ ký tự nào ngoại trừ một dòng mới; và^nghĩa là từ chối. Vì vậy, [^.] Nên là dòng mới và [^.] * Nên có bất kỳ số dòng mới nào. Tuy nhiên, lý thuyết này trái ngược với việc thực hiện thế giới thực.
Bất kỳ trợ giúp nào được đánh giá cao và cảm ơn trước.
Mã python tôi đã sử dụng:
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]
Tài liệu Python thậm chí còn nói quá rõ ràng: [Ký tự đặc biệt mất ý nghĩa đặc biệt của chúng bên trong bộ] (http://docs.python.org/2/library/re.html#regular-expression-syntax). – Evert
không an toàn vì sao nó khớp với 'aapl' – Anirudha
@Anirudh: Đúng vậy. –