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="
这是要匹配的字符串)
关闭积极的前瞻.*
匹配我们要返回的字符串的每一个字符?
使*
懒惰(不贪婪)(?=
打开正向前瞻以匹配关闭模式,但不返回字符串"
匹配下一个双引号)
关闭积极的前瞻
添加回答
举报