Skip to main content
 首页 » 编程设计

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

2025年02月15日43Terrylee


从不同的线程使用此代码

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+ :匹配任何非单词字符

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

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