Как использовать регулярные выражения для вытягивания подстроки? (скребок экрана) - PullRequest
1 голос
/ 20 мая 2010

Привет, ребята, я действительно пытаюсь понять регулярные выражения при очистке сайта, я использовал его в своем коде достаточно, чтобы вытащить следующее, но я застрял здесь.Мне нужно быстро схватить это:

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)

Вот где я запутался.есть идеи?

Редактировать: номер артикула меняется в зависимости от продукта, поэтому в этом проблема для меня

Ответы [ 5 ]

1 голос
/ 20 мая 2010
http://www\.example\.com/online/store/TitleDetail\?detail&sku=\d+

используйте группу \ d с "Greedy" +, чтобы квалифицировать любое целочисленное значение в поле sku

0 голосов
/ 20 мая 2010

http://txt2re.com/ может помочь вам

0 голосов
/ 20 мая 2010

, если всегда есть 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]

0 голосов
/ 20 мая 2010
pattern = re.compile(r"window.location=\\'([^\\]*)")
haystack = r"""<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>"""
url = re.search(pattern, haystack).group(1)
0 голосов
/ 20 мая 2010

Для этого вам не нужны регулярные выражения, просто используйте строковые методы:

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