Python 如何使用正则表达式提取子字符串?(刮网)

Python 如何使用正则表达式提取子字符串?(刮网),python,regex,screen-scraping,Python,Regex,Screen Scraping,嘿,伙计们,我真的在抓取一个站点时试图理解正则表达式,我在代码中已经使用了足够多的正则表达式,但我被困在这里。我需要快速抓住这个: http://www.example.com/online/store/TitleDetail?detail&sku=123456789 由此: ('<a href="javascript:if(handleDoubleClick(this.id)){window.location=\'http://www.example.com/online/st

嘿,伙计们,我真的在抓取一个站点时试图理解正则表达式,我在代码中已经使用了足够多的正则表达式,但我被困在这里。我需要快速抓住这个:

http://www.example.com/online/store/TitleDetail?detail&sku=123456789
由此:

('<a href="javascript:if(handleDoubleClick(this.id)){window.location=\'http://www.example.com/online/store/TitleDetail?detail&sku=123456789\';}" id="getTitleDetails_123456789">\r\n\t\t\t            \tcheck store inventory\r\n\t\t\t            </a>', 1)
(“”,1)
这就是我困惑的地方。有什么想法吗

编辑:每个产品的sku编号都会发生变化,所以这就是我的问题所在

http://www\.example\.com/online/store/TitleDetail\?detail&sku=\d+
使用\d组加上“贪婪”+,以限定sku字段中的任何整数值


使用带“贪婪”+的\d组来限定sku字段中的任何整数值

不需要正则表达式,只需使用字符串方法即可:

result = html[0].split("window.location='")[1].split("'")[0]

您不需要正则表达式,只需使用字符串方法即可:

result = html[0].split("window.location='")[1].split("'")[0]
pattern=re.compile(r“window.location=\\'([^\\]*))
草垛=r“”
url=re.search(模式,干草堆).group(1)
pattern=re.compile(r“window.location=\\'([^\\]*))
草垛=r“”
url=re.search(模式,干草堆).group(1)

如果始终有9位数字

http://www.example.com/online/store/TitleDetail?detail&sku=[0-9]{9}
如果有任意位数:

http://www.example.com/online/store/TitleDetail?detail&sku=[0-9]*
更一般的:

http*?sku=[0-9]*
(in*?表示它将首先找到较短的匹配项,因此不太可能找到跨越多个URL的匹配项。)


编辑:[0-9]。如果总是有9位数字,则不是[1-9]

http://www.example.com/online/store/TitleDetail?detail&sku=[0-9]{9}
如果有任意位数:

http://www.example.com/online/store/TitleDetail?detail&sku=[0-9]*
更一般的:

http*?sku=[0-9]*
(in*?表示它将首先找到较短的匹配项,因此不太可能找到跨越多个URL的匹配项。)


编辑:[0-9]。不是[1-9]

可能会帮到你

可能会帮到你

你可能会觉得PyCon 2010的演讲很有趣-谢谢克里斯蒂安,我一直在看这篇文章。。但是我没有找到像你提供的那样好的饲料。干杯你可能会发现PyCon 2010的这篇演讲很有趣-谢谢克里斯蒂安,我一直在看这篇文章。。但是我没有找到像你提供的那样好的饲料。干杯