正则表达式无法在两个字符串之间获取字符串。Python27

2024-10-03 00:22:14 发布

您现在位置:Python中文网/ 问答频道 /正文

从这个URL视图源:https://www.amazon.com/dp/073532753X?smid=A3P5ROKL5A1OLE 我想得到介于var iframeContent =obj.onloadCallback = onloadCallback;之间的字符串

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

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

我甚至试过iframeContent(.*?)obj.onloadCallback但它不起作用。你知道吗


Tags: 字符串httpscom视图objurlamazonvar
3条回答

我怀疑输入字符串位于多个台词。试试看在搜索行中添加re.M(即re.findall('someString', text_Holder, re.M))。你知道吗

看起来你只是想要那个巨大的编码字符串。我相信你的失败有两个原因。您没有在DOTALL模式下运行,这意味着您的.将无法跨多行匹配,并且您的正则表达式由于catastrophic backtracking而失败,当您有一个非常长的变量长度匹配,它与后面的字符匹配时,可能会发生这种情况。你知道吗

这应该是你想要的

m = re.search(r'var iframeContent = \"([^"]+)\"', html_source)
print m.group(1)

正则表达式只是在两个双引号之间寻找除双引号[^"]之外的任何字符。因为可变长度匹配和紧随其后的匹配不匹配任何相同的字符,所以不会遇到灾难性的回溯问题。你知道吗

你也可以试试这个正则表达式

(?<=iframeContent =)(.*)(?=obj.onloadCallback = onloadCallback)

你可以在this site检查测试。你知道吗

使用DOTALL模式非常重要吗?这意味着您将有一行代码

相关问题 更多 >