我正在製作一個腳本來抓取網頁並查找所有大寫名稱,等於一個數字(例如DUP_NB_FUNC=8
)。然而,我的正則表達式必須匹配的部分只有大寫字母似乎沒有正常工作。正則表達式不匹配大寫字母,儘管被指示這樣做
value = re.findall(r"[A-Z0-9_]*(?==\d).{2,}", input)
|tc_apb_conf_00.v:-:DUP_NB_FUNC=2
|:-:DUP_NB_FUNC=2
|:-:DUP_NB_FUNC=4
|:-:DUP_NB_FUNC=5
|tc_apb_conf_01.v:-:DUP_NB_FUNC=8
所需的輸出應該看起來像上面。但是,我得到:基於輸入我可以看到它找到匹配開始=1
|tc_apb_conf_00.v:-:=1" name="viewport"/>
|:-:DUP_NB_FUNC=2
|:-:DUP_NB_FUNC=4
|:-:DUP_NB_FUNC=5
|tc_apb_conf_01.v:-:DUP_NB_FUNC=8
。我不明白爲什麼,因爲我只將A-Z
置於正則表達式範圍內。我真的很感激一點幫助和清理。
難道你讓零'[A-Z0-9 _]單曲? '[A-Z0-9 _] +'是否有所作爲? – Biffen
Regex 101可以更清楚地解釋你的表情發生了什麼。 https://regex101.com/r/qE8iQ7/1 - 似乎是「。{2,}」與任何字母(除了換行符)無限次相匹配的問題。我想如果你在'='之後放置任何東西,它也會匹配。或者將'*'改爲'+'以在'1和無限'次之間匹配。 –
KymikoLoco