2016-11-06 5 views
-1

hier ist ein Beispieltext:Regex String, wenn enthält spezifisches Wort in Begrenzer

div data-bigurl="https://media-cdn.tripadvisor.com/media/photo-o/0d/4c/82/42/sala.jpg"> 

div data-bigurl="https://media-cdn.tripadvisor.com/media/photo-t/0d/4c/82/42/sala.jpg"> 

div data-bigurl="https://media-cdn.tripadvisor.com/media/photo-s/0d/4c/82/42/sala.jpg"> 

div data-bigurl="https://media-cdn.tripadvisor.com/media/photo-o/0d/4c/82/42/prova.jpg"> 

ich einen regulären Ausdruck benötigen, die die Startdelimiter [data-bigurl = „] und Endebegrenzers [\“>] entsprechen und enthält das Wort "Foto-o" innen.

Ich versuchte ^(?=.*\bphoto-o\b).*$, aber kein Trennzeichen.

Bitte überprüfen Sie es http://www.rubular.com/r/Vsw6OpBjnw

+0

Ich denke, ein HTML-Parser könnte ein besserer Weg sein, hier zu gehen. Sie können das Attribut "databig-url" für jedes Tag extrahieren und dann einen Regex darauf ausführen. –

+0

Andrea könnten Sie bitte klären? Zeigen Sie die Zeichenfolge oder Teilzeichenfolge, die Sie als Ergebnis möchten. _ "Entspricht dem Startbegrenzer [data-bigurl ="] und dem Endbegrenzer [\ ">]" _ klingt ein bisschen komisch. Ein _match_ in einer Regex ist der Ergebnistext aus der Regex. Ich bezweifle, dass du ein 'data-bigurl =" 'als Ergebnis haben willst ... O nein? – tmslnz

Antwort

0

Verwenden lookaround Behauptungen die angepassten Zeichen aus dem Ergebnis auszuschließen:

(?<=div data-bigurl=\")(.*\bphoto-o\b.*)(?=\") 

Überprüfen Sie: http://www.rubular.com/r/jHarfKN29j

+0

Achte auf Lookbehind' (? <= ', Nicht alle Engines unterstützen es (JS ist am meisten) beliebtes ...) – tmslnz

+0

Guter Kommentar, aber die Frage ist hier in Ruby (siehe mitgeliefertes Beispiel) – Bruno

+0

Es funktionierte für mich –

Verwandte Themen