从此URL视图源:https://www.amazon.com/dp/073532753X?smid=A3P5ROKL5A1OLE我想获取<code>var iframeContent=</code>和<code>obj之间的字符串。onloadCallback=onloadCallaback代码>
我有这个正则表达式iframeContent(. *?) obj.onloadCallback=onloadCallback;
但它不起作用。我不擅长正则表达式,所以请原谅我缺乏知识。
我甚至尝试了iframeContent(. *?) obj.onload回调
,但它不起作用。
看起来你只是想要那个巨大的编码字符串。我认为你的失败有两个原因。您不是在< code>DOTALL模式下运行,这意味着您的< code >。不会跨多行匹配,并且您的regex会因为灾难性回溯而失败,当您有一个很长的可变长度匹配,并且与它后面的字符匹配相同的字符时,就会发生这种情况。
这应该能得到你想要的
m = re.search(r'var iframeContent = \"([^"]+)\"', html_source)
print m.group(1)
正则表达式只是在两个双引号之间查找除双引号[^"]
之外的任何字符。因为可变长度匹配和紧接在它之后的匹配不匹配任何相同的字符,所以您不会遇到灾难性的回溯问题。
我怀疑输入字符串跨多行。尝试在搜索行中添加re. M
(即re.findall('某字符串',text_Holder,re. M)
)。
你也可以试试这个正则表达式
<代码>(?
你可以在这个网站上查看测试。
使用DOTALL
模式很重要吗,这意味着你将有单行