正则表达式中[^.]*的含义是什么?

use*_*451 9 python regex

我试图从以下文本中获得482.75: <span id="yfs_l84_aapl">482.75</span>

我使用的正则表达式是:regex = '<span id="yfs_l84_[^.]*">(.+?)</span>'它工作正常.

但是我不明白的是为什么[^.]*可以在这里匹配aapl?我的理解是.指除换行符之外的任何字符; 和^表示否定者.所以[^.]应该是换行符,[^.]*应该是任意数量的新行.然而,这种理论与现实世界的实施相反.

任何帮助表示赞赏,并提前致谢.


我使用的python代码:

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]
Run Code Online (Sandbox Code Playgroud)

Han*_*ing 27

[].手段只是一个点.领导^意味着"除了......之外的任何东西".

因此[^.]*匹配零个或多个非点.

  • @Anirudh:是的. (7认同)
  • Python文档甚至如此明确地说:[特殊字符在集合中失去了它们的特殊含义](http://docs.python.org/2/library/re.html#regular-expression-syntax). (2认同)