擅长:python、mysql、java
<p>这是有效的:</p>
<pre><code>import urllib
import re
gdoc = urllib.urlopen('http://google.com').read()
scriptlis = re.findall('(?si)<script>(.*?)</script>', gdoc)
print scriptlis
</code></pre>
<p>这里的键是<code>(?si)</code>。“s”设置“dotall”标志(与<code>re.DOTALL</code>相同),它使Regex在换行符上匹配。这实际上是你问题的根源。上的脚本谷歌跨越多行,所以Regex不能匹配它们,除非您告诉它在<code>(.*?)</code>中包含新行。在</p>
<p>“i”设置“ignorcase”标志(与<code>re.IGNORECASE</code>相同),它允许它匹配任何可以是JavaScript的内容。现在,这不是完全必要的,因为Google的代码很好。但是,如果您有一些糟糕的代码执行类似于<code><SCRIPT>...</SCRIPT></code>的代码,那么您将需要这个标志。在</p>