Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

jaran17

Frischling

  • »jaran17« ist der Autor dieses Themas

Beiträge: 15

Wohnort: Bern

Beruf: Azubi

  • Private Nachricht senden

1

21.03.2011, 15:15

Regex URL erkennen(keine Bilder)

Ich bins schon wieder ;)

Diesmal habe ich ein Problem mit meinem Regex.

Und zwar möchte ich aus einem Textfile URLs raussuchen und diese dann in meiner DB speichern.
Dies funktioniert mit dem folgenden Pattern auch ganz gut:

C#-Quelltext

1
String strPattern = @"(http|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?";

Nun mein Problem, Ich möchte das keine Links zu Bildern gespeichert werden, also mit .jpeg, .gif usw. am Ende.
wenn ich das aber so eingebe, funktioniert das nicht, und findet auch andere Links nicht mehr, die kein .jpeg am Schluss haben.

C#-Quelltext

1
String strPattern = @"(http|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?[^(.jpeg|.jpg|.png|.gif)]";


Sieh jemand das Problem?
Noch zur info, den ersten Pattern habe ich nicht selber geschrieben, sondern aus dem INet, weis also nicht genau wie er aufgebaut ist, aber er funktioniert richtig.
grtz Jaran
OMGWTFBBQ!

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

2

21.03.2011, 15:20

Vergessen die Punkte der Datei-Endungen zu escapen?
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

jaran17

Frischling

  • »jaran17« ist der Autor dieses Themas

Beiträge: 15

Wohnort: Bern

Beruf: Azubi

  • Private Nachricht senden

3

21.03.2011, 15:25

Vergessen die Punkte der Datei-Endungen zu escapen?



danke für die schnelle Antwort :)

aber wie gesagt, ich kenne mich mit Regex nicht so aus...

escapen? heisst das, das es dann am Schluss des Pattern so aussehen sollte:

C#-Quelltext

1
[^(\.jpeg|\.jpg|\.png|\.gif)]

oder wie?
OMGWTFBBQ!

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

4

21.03.2011, 15:29

Joar, denke schon. Der Punkt bei Regexp hat jedenfalls eine spezielle Bedeutung (Platzhalter für jedes beliebige Zeichen)
Ob der Rest alles stimmt... weiß nich, bei Regexp komm ich immer schnell durcheinander ;)
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

5

21.03.2011, 15:45

Hier kannst du ganz gut deine Regex testen: RegExr

Gruß
SaRu_

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

6

21.03.2011, 21:39

Hier gibts noch 2 Links:
http://rubular.com/
http://txt2re.com/

Bei dem zweiten kann man sich sehr schön Regs zusammenbauen, auch wenn ich das nie nur so gemacht habe. Habe meistens nur nachgeschaut wie gewisse Sachen gehen und dann selbst nachgelesen, um unangenehme Überraschungen zu vermeiden. :)

Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

7

21.03.2011, 21:53

Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

jaran17

Frischling

  • »jaran17« ist der Autor dieses Themas

Beiträge: 15

Wohnort: Bern

Beruf: Azubi

  • Private Nachricht senden

8

22.03.2011, 08:18

danke für die vielen Links.

Da ich das mit dem keine Bildendungen nicht hingekriegt habe, habe ich es nun anders gelöst. Ich habe einfach zuerst ein Regex replace gemacht, und alle Links mit Bildendungen oder anderen unerwünschten Endungen entfernt.
OMGWTFBBQ!

jaran17

Frischling

  • »jaran17« ist der Autor dieses Themas

Beiträge: 15

Wohnort: Bern

Beruf: Azubi

  • Private Nachricht senden

9

28.03.2011, 14:55

Weiteres Reges Problem

Ich habe nun aber ein weiteres Problem.

Und zwar springt mein Programm beim ersten Regex einfach aus den Schleifen und aus der Methode an eine andere Stelle des Programms wo ich ein try/catch habe. Ich habe keine Ahnung wieso, denn die Regex Anweisung sollte doch richtig sein o.O

C#-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
string suche = Console.ReadLine(); 
string[] Files = Directory.GetFiles(@"C:\Temp\"); 
int k = Files.Length; 
Console.WriteLine(k);for (int l = 0; l < k-1; l++) 
{ 
string sContent = ""; 
StreamReader myFile = new StreamReader((Files[l]), System.Text.Encoding.Default); 
sContent = myFile.ReadToEnd(); 
myFile.Close(); 
foreach (Match matchl in Regex.Matches(sContent, suche)) 
{ 
Console.WriteLine(matchl.Value); 
string link = (Files[l]); 
Console.WriteLine(link); 
link = System.Text.RegularExpressions.Regex.Replace(link, @"C:\Temp\", string.Empty); 
Console.WriteLine(link); 

link = System.Text.RegularExpressions.Regex.Replace(link, ".xml", string.Empty); 
Console.WriteLine(link);System.Diagnostics.Process.Start(link); 
} 
}


wäre dankbar für Hilfe :)

Edit: sorry für die Formatierung, ich brings nicht besser zustande^^
OMGWTFBBQ!

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

10

28.03.2011, 15:31

Hast Du Dir mal die Fehlermeldung bei der Exception durchgelesen?
Das try{}catch ist ja nicht einfach nur so da, sondern das hat einen Sinn!

Übrigens hättest Du die Datei auch einfacher lesen können mittels "File.ReadAllText" statt einen Stream zu öffnen, zu lesen und wieder zu schließen.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Werbeanzeige