我想找到某些HTML文本中某些点之间的所有术语,但是当我使用'。'在我的正则表达式中,它不包含新行。我试图研究这个,并在DOTALL上读了一些,但是在我的代码中找不到关于如何在物理上使用它的任何解释。提到了re.dotall,但我似乎无法在任何地方使用它。我试图使用替代版本的'。'包含新行的正则表达式运算符,但由于某种原因它只返回findall项的第一个实例。
这是我的Python文件:
.category.right .category-header .title {
padding: 70px 0 70px 100px; /* for vertical align middle */
text-align: right;
float: right; /* to be placed on right side */
}
from urllib import urlopen
from re import findall
dennisov_url = 'https://denissov.ru/en/'
dennisov_html = urlopen(dennisov_url).read()
watch_image_urls = findall('<div class="grid"[\s\S]*?<img.* src="([^"]+)".*
[\s\S]*?<div class="orderplacebut', dennisov_html)
有人能请教我如何在我的代码中使用DOTALL功能(特别是),或解释为什么[\ s \ S] *?正则表达式运算符只提供一个URL?
更新:我现在已将DOTALL正则表达式合并到代码中而不是([^&#34;] +),但它仍然只返回一个URL(现在是最后一个)
答案 0 :(得分:0)
要使用re.DOTALL运算符,只需将其作为标志发送到findall
import re
# code
# code
watch_image_urls = findall('<div class="grid"[\s\S]*?<img.* src="([^"]+)".*
[\s\S]*?<div class="orderplacebut', dennisov_html, flags=re.DOTALL)
仅供参考,要使用多个标志,请用OR分隔它们
flags = re.S | re.I
有关详细信息,请参阅re's documentation。