2017-02-16 1 views
0

J'ai créé un lecteur RSS et j'essaie d'obtenir un aperçu de cette image. Voici ce que j'utilise pour obtenir l'image et la seule chose qui ne fonctionne pas est le modèleBesoin d'aide pour créer un modèle regex pour obtenir une image

if item?.content != nil { 

     print("works until here") 
     let htmlContent = item!.content as NSString 
     var imageSource = "" 

     let rangeOfString = NSMakeRange(0, htmlContent.length) 
     let regex = try! NSRegularExpression(pattern: "(http[^\\s]+(jpg|jpeg|png|tiff)\\b)", options: .caseInsensitive) 

     if htmlContent.length > 0 { 
      let match = regex.firstMatch(in: htmlContent as String, options: [], range: rangeOfString) 

      if match != nil { 
       let imageURL = htmlContent.substring(with: (match!.rangeAt(2))) as NSString 
       print(imageURL) 

       if NSString(string: imageURL.lowercased).range(of: "feedburner").location == NSNotFound { 
        imageSource = imageURL as String 
       } 
      } 
     } 

     if imageSource != "" { 
      cell.itemImageView.setImageWith(NSURL(string: imageSource) as URL!, placeholderImage: UIImage(named: "thumbnail")) 
     }else { 
      cell.itemImageView.image = UIImage(named: "thumbnail") 
     } 
    } 

J'ai besoin d'aide pour créer un bon modèle pour obtenir l'image de la classe « st-galerie » du site travelator.ro . enter image description here

Merci beaucoup d'avance. :)

+0

Utilisez une bibliothèque d'analyse HTML. [Les expressions régulières ne peuvent pas analyser HTML.] (Http://stackoverflow.com/a/1732454/3141234) Les expressions régulières reconnaissent l'ensemble des langues régulières. HTML est un langage sans contexte, qui est plus haut sur la hiérarchie de Chomsky. Les expressions régulières ne peuvent pas reconnaître les langues sans contexte. – Alexander

Répondre

0

Regular expressions can't parse HTML. Les expressions régulières reconnaissent l'ensemble des langues régulières. HTML est un langage sans contexte, qui est plus haut sur la hiérarchie de Chomsky. Les expressions régulières ne peuvent pas reconnaître les langues sans contexte.

Vous auriez besoin d'utiliser un analyseur plus compliqué. Les bibliothèques d'analyse HTML ont fait cela, je vous suggère de regarder en utilisant l'un d'entre eux.

+0

Je vois. Curieusement, () fonctionne sur texanerin.com, par exemple. – perte

+0

@perte Vous pouvez créer des regex qui fonctionnent pour des exemples particuliers, mais pas pour le langage en général. – Alexander

+0

Et c'était ma question initiale. Je n'arrive pas à écrire une bonne regex pour le site web travelator.ro. – perte