使用 re 库 python 无法正确解析结束行

考虑字符串:

<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

我想Uttam Nagar East使用正则表达式函数得到结果,但我得到的输出是

Uttam Nagar East">Uttam Nagar East, Delhi <span class="to-txt" id="citytt1'

我试过使用

print(re.findall(r'data-rlocation="(.*)["]',contents))

print(re.findall(r'data-rlocation="(.*)"',contents))


皈依舞
浏览 199回答 3
3回答

四季花海

该小组(.*)在其捕获中包含了结束语。试试这个:>>> re.findall(r'data-rlocation="([^"]*)"', contents)['Uttam Nagar East']在这里查看它是如何工作的。

摇曳的蔷薇

您正在使用贪婪的正则表达式,您可以添加“?” 让它不贪心import recontents = '<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))

小唯快跑啊

使用惰性匹配进行积极的后视和积极的前瞻将起到作用。图案:(?<=data-rlocation=").*?(?=")代码:print(re.findall(r'(?<=data-rlocation=").*?(?=")',contents))正则表达式 101 上的演示解释(?<=使用积极的前瞻。它不会返回字符串。它只会确保这个模式在匹配之前是正确的。data-rlocation="这是要匹配的字符串)关闭积极的前瞻.*匹配我们要返回的字符串的每一个字符?使*懒惰(不贪婪)(?=打开正向前瞻以匹配关闭模式,但不返回字符串"匹配下一个双引号)关闭积极的前瞻
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python