![]() |
Reguläre Ausdrücke
Hallo Leute,
ich bin auf der Suche nach einem Regulären Ausdruck, der mir aus diesem String hier Zitat:
![]() Soweit bin ich schon: /.*\.(mp3|wav)/ Aber leider spuckt er mir dann nur das hier aus(print_r der Ergebnisse): Zitat:
Gruß |
Re: Reguläre Ausdrücke
Hi!
Delphi-Quellcode:
dürfte funktionieren. :-D
/http.*?\.(mp3|wav)/
|
Re: Reguläre Ausdrücke
Hehe...genial, Danke! Nur ein Problem und eine Frage noch
Problem: Er gibt mir nur einen Link aus Frage: Was bringen mir hier ".*?" der Punkt und das Fragezeichen? |
Re: Reguläre Ausdrücke
Hallo moritz,
Dein Ausdruck sucht nach folgendem Muster
Code:
Das bedeutet mit anderen Worten:
Beliebig viele beliebige Zeichen, die letztlich mit der Folge ".mp3" oder ".wav" enden.
Code:
Versuche bei regulären Ausdrücken nach Möglichkeit, sehr genau einzugrenzen, wonach Du suchst. Hier:
Alles ab Beginn der Zeichenkette, bis ".mp3" oder ".wav" erreicht wird.
Code:
funktionieren sollte etwas in dieser Art (nicht getestet)
Ein in Anführungszeichen eingefasster (das bedeutet insbesondere, dass innerhalb des eingefassten Textes keine weiteren Anführungszeichen auftreten) nicht-leerer Text, der mit ".mp3" oder ".wav" in beliebiger Groß-/Kleinschreibung endet.
Code:
Der Subausdruck 1 enthält dann den tatsächlichen Dateinamen.
(?i)\"([^\"]+\.(mp3|wav))\"
|
Re: Reguläre Ausdrücke
.* findet dir null oder mehr beliebige zeichen, davon aber so viele wie möglich
das ? direkt dahinter macht, dass dieses .* so wenig wie möglich findet probier mal den regex ohne dieses ? aus und du wirst sehen |
Re: Reguläre Ausdrücke
Choose, danke für die Erklärung! Aber deienr geht leider nicht :-(
@ripper: Ich hab das ? weg, und nichts hat sich verändert. |
Re: Reguläre Ausdrücke
Ich versuchs auch mal so schön zu erklären :
/http.*?\.(mp3|wav)/
Delphi-Quellcode:
Suche die Zeichenkette "http"
http
Delphi-Quellcode:
dannach beliebig viele beliebige Zeichen... :mrgreen:
.*
Delphi-Quellcode:
... aber nur soviele bis der nächste Suchausdruck auch gefunden wird! Und zwar
?
Delphi-Quellcode:
.wav ODER .mp3! Der Backslash vor dem . maskiert den Punkt, d.h. er sollen den Punkt als Zeichen behandeln nicht als regulären Ausdruck.
\.(mp3|wav)
:zwinker: |
Re: Reguläre Ausdrücke
Okay, Danke für eure Erklärungen! Aber leider findet er immer nur einen URL :-(
P.S.: Ich arbeite mit preg_match |
Re: Reguläre Ausdrücke
Zitat:
Versuche zunächst eine möglichst simple Version, zB
Code:
und erst später mit dem Modifizierer zur Vernachlässigung der Groß-/Kleinschreibung zu arbeiten.
/\"([^\"]+\.(mp3|wav))\"/
BTW: Multiplikatoren der Art "+?" oder "*?" verwerfen der standardgemäßen "gierigen" zugunsten der "genügsamen" Interpretierung. Du solltest in Deiner Dokumentation zu den regulären Ausdrücken unter "gierig" oder "greedy" eine Erklärung finden. |
Re: Reguläre Ausdrücke
Okay, er geht jetzt, danke! Aber leider - wie gesagt - kommt immer nur ein URL raus :-(
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:06 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz