Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Reguläre Ausdrücke (https://www.delphipraxis.net/28223-regulaere-ausdruecke.html)

moritz 21. Aug 2004 12:57


Reguläre Ausdrücke
 
Hallo Leute,

ich bin auf der Suche nach einem Regulären Ausdruck, der mir aus diesem String hier
Zitat:

<SCRIPT LANGUAGE="JavaScript"> hit(97313,1,0,"0097313","http://www.natter-jack.info/sound%20effects/farm%20animals/wild%20boar.wav","http://www.natter-jack.info/Main%20pages/sounds_of_the_countryside.htm","wild boar",14,1,8,11025,"1.3") hit(76965,2,0,"0076965","http://www.bigcats.org/abc/sounds/boar.wav","http://www.bigcats.org/abc/identification/sounds.html","boar",20,1,8,22254,"0.9")
</SCRIPT>
die URL's der wav bzw. mp3-Dateien rausfiltert, also z.B.
http://www.natter-jack.info/sound%20...ild%20boar.wav

Soweit bin ich schon:
/.*\.(mp3|wav)/

Aber leider spuckt er mir dann nur das hier aus(print_r der Ergebnisse):
Zitat:

Array ( [0] => hit(97313,1,0,"0097313","http://www.natter-jack.info/sound%20effects/farm%20animals/wild%20boar.wav [1] => wav )
Könnt ihr mir helfen?

Gruß

MarcusB 21. Aug 2004 13:07

Re: Reguläre Ausdrücke
 
Hi!


Delphi-Quellcode:
/http.*?\.(mp3|wav)/
dürfte funktionieren. :-D

moritz 21. Aug 2004 13:09

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?

choose 21. Aug 2004 13:12

Re: Reguläre Ausdrücke
 
Hallo moritz,

Dein Ausdruck sucht nach folgendem Muster
Code:
Beliebig viele beliebige Zeichen, die letztlich mit der Folge ".mp3" oder ".wav" enden.
Das bedeutet mit anderen Worten:
Code:
Alles ab Beginn der Zeichenkette, bis ".mp3" oder ".wav" erreicht wird.
Versuche bei regulären Ausdrücken nach Möglichkeit, sehr genau einzugrenzen, wonach Du suchst. Hier:
Code:
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.
funktionieren sollte etwas in dieser Art (nicht getestet)
Code:
(?i)\"([^\"]+\.(mp3|wav))\"
Der Subausdruck 1 enthält dann den tatsächlichen Dateinamen.

ripper8472 21. Aug 2004 13:13

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

moritz 21. Aug 2004 13:19

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.

MarcusB 21. Aug 2004 13:21

Re: Reguläre Ausdrücke
 
Ich versuchs auch mal so schön zu erklären :

/http.*?\.(mp3|wav)/

Delphi-Quellcode:
http
Suche die Zeichenkette "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:
\.(mp3|wav)
.wav ODER .mp3! Der Backslash vor dem . maskiert den Punkt, d.h. er sollen den Punkt als Zeichen behandeln nicht als regulären Ausdruck.

:zwinker:

moritz 21. Aug 2004 13:28

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

choose 21. Aug 2004 13:29

Re: Reguläre Ausdrücke
 
Zitat:

Zitat von moritz
Choose, [..] deienr geht leider nicht :-(

Du scheinst eine Umgebung zu verwenden, bei der reguläre Ausdrück in Schrägstriche eingebettet sein müssen, hast Du das getan? Hast Du den Modifizierer gemäß der von Dir verwendeten Notation ans Ende gestellt?
Versuche zunächst eine möglichst simple Version, zB
Code:
/\"([^\"]+\.(mp3|wav))\"/
und erst später mit dem Modifizierer zur Vernachlässigung der Groß-/Kleinschreibung zu arbeiten.

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.

moritz 21. Aug 2004 13:36

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.
Seite 1 von 2  1 2      

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