我试图使用以下简单代码编写长度信息的网站:
list = re.findall('(?<=Length:\s\s)[:\d]+', response.text)
if len(list) > 0:
data['Length'] = list[0]
else:
data['Length'] = '00:00'
但是,如果长度信息少于一小时,它只会获取信息。例如,它获得51:00而不是01:08:47。我检查了短代和超过一小时的源代码。这是他们的样子。似乎长度超过1小时,只有一个较小的空白区域。所以我试过了,但这一次,list只返回一个空格。有人知道如何获得短期和长期信息吗?非常感谢你!
list = re.findall('(?<=Length:)[\s:\d]+', response.text)
if len(list) > 0:
data['Length'] = list[0]
else:
data['Length'] = '00:00'
答案 0 :(得分:1)
您需要'(?<=Length:)\s*(\d\d[\s*:\s*\d\d]+)'
。
答案 1 :(得分:1)
尝试使用此正则表达式并提取组1中存在的任何内容:
Length\s*:\s*(\d+\s*(?::\s*\d+\s*){1,2})
<强>解释强>
Length\s*:
- 匹配Length
字面上跟随0 +出现的空格,尽可能多:\s*
- 匹配:
后跟0 + white-spaces \d+\s*
- 匹配1个出现的数字后跟0 +空格。我们从第1组开始捕获文本。我们捕获直到比赛结束。(?::\s*\d+\s*){1,2}
- 匹配模式(?::\s*\d+\s*)
的1或2次匹配
(?:)
- 表示非捕获组:\s*
- 匹配:
后跟0 +出现的空格\d+
- 匹配1位以上的数字\s*
- 匹配0+出现的空格替代正则表达式:(没有任何组)