3 回答

TA貢獻1811條經驗 獲得超5個贊
該小組(.*)在其捕獲中包含了結束語。試試這個:
>>> re.findall(r'data-rlocation="([^"]*)"', contents)
['Uttam Nagar East']
在這里查看它是如何工作的。

TA貢獻1793條經驗 獲得超6個贊
您正在使用貪婪的正則表達式,您可以添加“?” 讓它不貪心
import re
contents = '<p class="sm clg" data-rlocation="Uttam Nagar East">Uttam Nagar East, Delhi <span class="to-txt" id="citytt1">B-24, East Uttam Nagar, Uttam Nagar East,<br>Delhi<span> - </span>110059'
print(re.findall(r'data-rlocation="(.*?)"',contents))

TA貢獻1863條經驗 獲得超2個贊
使用惰性匹配進行積極的后視和積極的前瞻將起到作用。
圖案:(?<=data-rlocation=").*?(?=")
代碼:print(re.findall(r'(?<=data-rlocation=").*?(?=")',contents))
解釋
(?<=
使用積極的前瞻。它不會返回字符串。它只會確保這個模式在匹配之前是正確的。data-rlocation="
這是要匹配的字符串)
關閉積極的前瞻.*
匹配我們要返回的字符串的每一個字符?
使*
懶惰(不貪婪)(?=
打開正向前瞻以匹配關閉模式,但不返回字符串"
匹配下一個雙引號)
關閉積極的前瞻
添加回答
舉報