python - 重新编译正则表达式帮助(python、beautifulsoup)

标签 python regex beautifulsoup


从不同的线程使用此代码

import re
import requests
from bs4 import BeautifulSoup

data = """
<script type="text/javascript">
    window._propertyData = 
    { *** a lot of random code and other data ***
    "property": {"street": "21st Street", "apartment": "2101", "available": false}
    *** more data ***
    }
</script>
"""

soup = BeautifulSoup(data, "xml")
pattern = re.compile(r'\"street\":\s*\"(.*?)\"', re.MULTILINE | re.DOTALL)
script = soup.find("script", text=pattern)
print pattern.search(script.text).group(1)

这让我得到了想要的结果:

21st Street

但是,我试图通过尝试正则表达式的不同变体来获得全部内容,但无法实现输出:

{"street": "21st Street", "apartment": "2101", "available": false}

我尝试了以下方法:

pattern = re.compile(r'\"property\":\s*\"(.*?)\{\"', re.MULTILINE | re.DOTALL)

它没有产生预期的结果。
感谢您的帮助!
谢谢。

最佳答案

根据上面的评论,更正您的拼写错误并使用它

 r"property\W+({.*?})"

RegexDemo

property : 寻找准确的字符串

\W+ :匹配任何非单词字符

({.*?}) : 捕获组一

  • .* 匹配大括号内的任何字符 {}
  • ? 尽可能少的匹配

关于python - 重新编译正则表达式帮助(python、beautifulsoup),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41095457/

相关文章:

python - 如何在不指定库存但直接指定主机的情况下运行 Ansible?

python - 使用类将整数列出为字符串

python - 如何使用正则表达式将缩写与其含义相匹配?

Python爬取表格元素

python - 当查找值不存在或为 null 时 pandas 查找的默认值

python - 如何避免在 python 中作为参数传递时进行惰性属性评估

用于格式化时间的 Javascript 正则表达式

python - 仅使用 python 正则表达式从最新的字符串中获取

Python + BeautifulSoup : Finding a HTML tag where an attribute contains a matched pattern of text?

python - 从缩减表中抓取数据