提问者:小点点

正则表达式无法获取 2 个字符串之间的字符串。蟒蛇 27 [复制]


从此URL视图源:https://www.amazon.com/dp/073532753X?smid=A3P5ROKL5A1OLE我想获取<code>var iframeContent=</code>和<code>obj之间的字符串。onloadCallback=onloadCallaback

我有这个正则表达式iframeContent(. *?) obj.onloadCallback=onloadCallback;

但它不起作用。我不擅长正则表达式,所以请原谅我缺乏知识。

我甚至尝试了iframeContent(. *?) obj.onload回调,但它不起作用。


共3个答案

匿名用户

看起来你只是想要那个巨大的编码字符串。我认为你的失败有两个原因。您不是在< 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模式很重要吗,这意味着你将有单行