[英]Python RegEx: Not capturing all the data (python3.6, scrapy)
我試圖使用以下簡單代碼編寫長度信息網站的腳本:
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 = re.findall('(?<=Length:)[\s:\d]+', response.text)
if len(list) > 0:
data['Length'] = list[0]
else:
data['Length'] = '00:00'
您需要'(?<=Length:)\\s*(\\d\\d[\\s*:\\s*\\d\\d]+)'
。
嘗試使用此Regex並提取組1中存在的所有內容:
Length\s*:\s*(\d+\s*(?::\s*\d+\s*){1,2})
說明:
Length\\s*:
-匹配Length
字面量,后面盡可能多地出現0+個空格 :\\s*
-匹配一個:
后跟0+空格 \\d+\\s*
-匹配1+個出現的數字,后跟0+個空格。 我們從第1組的此處開始捕獲文本。我們捕獲直到比賽結束。 (?::\\s*\\d+\\s*){1,2}
-匹配模式中出現的1或2次(?::\\s*\\d+\\s*)
(?:)
-表示非捕獲組 :\\s*
-匹配一個:
然后出現0+次空格 \\d+
-匹配1+個數字 \\s*
-匹配0+次出現的空白 替代正則表達式:(無任何組)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.