2016-02-17 2 views
0

У меня есть HTML часть: http://pastebin.com/FCcGNdwJSwift регулярного выражения найти все

И это мое регулярное выражение:

<div class="cl_price">[\s\.\w<>="$\/]*Your Price\s*\$(\d+.\d+)|<div class="cl_price">[\s\.\w<>="$\/]*\$(\d+.\d+) 

Когда я использую Python и запустить следующий код:

results = re.findall(r'%s' % regex, text) 

findall python documentation

У меня есть что-то вроде этого:

[('', '59.00'), ('74.00', ''), ('', '69.95'), ('74.00', ''), ('', '39.99'), ('', '39.95'), ('', '79.95'), ('', '29.95'), ('', '129.99'), ('', '59.00'), ('', '35.00'), ('', '35.00'), ('19.00', ''), ('', '39.00'), ('18.00', ''), ('', '69.95'), ('', '79.00'), ('', '54.95'), ('74.99', ''), ('', '79.95'), ('', '35.00'), ('', '95.00'), ('15.00', ''), ('15.00', ''), ('74.00', ''), ('', '39.00'), ('', '39.00'), ('', '39.00'), ('', '129.00'), ('15.00', ''), ('', '34.95'), ('', '39.95'), ('', '9.95'), ('', '79.99'), ('', '59.95'), ('', '49.99'), ('74.00', ''), ('74.00', ''), ('', '35.00'), ('', '69.00')] 

Затем я попытался сделать следующее в Swift. Моя последняя попытка была:

do { 
      let regex = try NSRegularExpression(pattern: regex, options: []) 
      let nstext = value as NSString 
      let all = NSRange(location: 0, length: nstext.length) 
      let results = regex.matchesInString(value, options: [], range: all) 



      return results.map { nstext.substringWithRange($0.range)} 
     } catch { 
      return [] 
     } 

И это возвращает меня:

["<div class=\"cl_price\">\n\n      <div class=\"regular_price\">\n     Regular Price $249.00"] 

Как я могу сделать вывод, как в Python?

+0

Что вы хотите получить? – OnlineCop

+0

Мне нужен вывод, как в python – Arti

+0

@Arti Вы пытаетесь разобрать HTML? Обратите внимание, что невозможно анализировать HTML с помощью регулярных выражений, так как HTML не является обычным языком. Почему вместо этого вы не используете парсер HTML? –

ответ

0

Регулярные выражения, как правило, не являются хорошей идеей при анализе XML/HTML.

С учетом этого, посмотрите https://regex101.com/r/yN4aR2/1. Вы также можете бросить весь HTML-источник на эту страницу regex101 и убедиться, что он соответствует тому, что вы хотите.

Обратите внимание, что это отформатировано для удобства чтения. Он не предназначен для копирования прямо в [swift] или любого другого языка регулярного выражения, в котором вы его используете.