WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Benötige Hilfe zu REGEXP: String zwischen 2 Zeichen extrah.

 

pooz
Forum-Anfänger

Forum-Anfänger


Beiträge: 49
Anmeldedatum: 04.05.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.02.2011, 17:31     Titel: Benötige Hilfe zu REGEXP: String zwischen 2 Zeichen extrah.
  Antworten mit Zitat      
Hallo liebe Helfer,

ich habe mehrere Anläufe auf reguläre Ausdrücke unternommen und bin kläglich gescheitert. Sad

Ich möchte gerne einen String, der zwischen 2 Anführungszeichen steht, extrahieren. Ich kriegs nicht hin.

Code:
...
HREF="Einführung.html"
<UL>
HREF="Ansatz.html"
...
 

Hierbei möchte ich gerne STR1='Einführung.html' und STR2='Ansatz.html" extrahieren.

Würde mir jemand eine Anlaufhilfe geben? Die Hilfe zu regexp überfordet schon etwas Sad

Danke und viele Grüße
Private Nachricht senden Benutzer-Profile anzeigen


_Peter_
Moderator

Moderator


Beiträge: 537
Anmeldedatum: 08.12.10
Wohnort: ---
Version: 7.10, 2010a
     Beitrag Verfasst am: 15.02.2011, 17:57     Titel:
  Antworten mit Zitat      
Hallo pooz,
falls immer 2 strings mit einem punkt getrennt zwischen den Anführungszeichen stehen dann würde ich das so machen:
Code:

a = 'HREF="Einführung.html'
regexp(a, '\w+\.\w+', 'match', 'once')
 


Ansonsten kannst du es auch wie folgt machen:
Code:

regexp(a, '"', 'split')
 

und in dem Fall wäre in a(2) bzw. a(end) dein gesuchter string.
_________________

Gruß
Peter
_________________
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht? Oder der MATLAB Hilfe?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
pooz
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 49
Anmeldedatum: 04.05.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.02.2011, 18:06     Titel:
  Antworten mit Zitat      
Hi Peter,

vielen Dank. Also der Dateiname zwischen den Anführungszeichen kann auch Underscore enthalten. Also:


Code:
HREF="Beispiel_Filter_m.html"
ist auch möglich.

Danke und Gruß
pooz

EDIT: Ansonsten steht in der eingelesenen Text-Datei noch viel Humbug mit drin, was natürlich bei der Suche mit regulären Ausdrücken ignoriert werde sollte. Aber wie? Die Zeilen, die von Interesse sind, fangen alle mit "HREF="" an.
Private Nachricht senden Benutzer-Profile anzeigen
 
_Peter_
Moderator

Moderator


Beiträge: 537
Anmeldedatum: 08.12.10
Wohnort: ---
Version: 7.10, 2010a
     Beitrag Verfasst am: 16.02.2011, 11:28     Titel:
  Antworten mit Zitat      
Hallo pooz,
also wenn ich das bei mir durchlaufen lasse, funktioniert das. Deswegen kann ich da dein Problem leider nicht nachvollziehen.
Code:

>> a = 'HREF="Beispiel_Filter_m.html"'
a =
HREF="Beispiel_Filter_m.html"
>> regexp(a, '\w+\.\w+', 'match', 'once')
ans =
Beispiel_Filter_m.html
 


Um noch das 'HREF="' am Anfang der Zeile zu berücksichtigen kannst du wie folgendes anwenden:
Code:

regexp(a, '(?<=^(HREF="))\w+\.\w+', 'match', 'once')
 

_________________

Gruß
Peter
_________________
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht? Oder der MATLAB Hilfe?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
pooz
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 49
Anmeldedatum: 04.05.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.02.2011, 15:46     Titel:
  Antworten mit Zitat      
Hi Peter,

entschuldige, hatte mich missverständlich ausgedrückt.

Deine 1. Lösung funktioniert wunderbar.

Allerdings klappt leider die 2. Lösung mit der Filterung nach "HREF="" nicht, wenn das wie folgt aufgebaut ist Sad
Code:
a='HREF="myfile.html">myfile</A>';


Da bekomme ich nur einen leeren String zurück.

Danke und viele Grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
_Peter_
Moderator

Moderator


Beiträge: 537
Anmeldedatum: 08.12.10
Wohnort: ---
Version: 7.10, 2010a
     Beitrag Verfasst am: 16.02.2011, 17:53     Titel:
  Antworten mit Zitat      
hmm... das ist seltsam.
bei mir funktioniert auch dieser Beispielstring.

Code:

>> a='HREF="myfile.html">myfile</A>'
a =
HREF="myfile.html">myfile</A>
>> regexp(a, '(?<=^(HREF="))\w+\.\w+', 'match', 'once')
ans =
myfile.html
 


Vielleicht kann das noch ein dritter gegenprüfen?
_________________

Gruß
Peter
_________________
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht? Oder der MATLAB Hilfe?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
pooz
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 49
Anmeldedatum: 04.05.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.02.2011, 18:31     Titel:
  Antworten mit Zitat      
Du hast Recht.
Entschuldige bitte. Das bedeutet, dass der Fehler bei mir an einer anderen Stelle auftaucht. Ich werde das überprüfen.

Mögliche Ursache: Ich lese aus einer Datei Zeile für Zeile ein, und speichere das in der Variablen 'a' ab. Diese muss ich nun mal genauer analysieren und gebe dann Bescheid.

Vielen Dank und bis später Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
pooz
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 49
Anmeldedatum: 04.05.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.02.2011, 11:30     Titel:
  Antworten mit Zitat      
Hi, Peter,

hab die Ursache für das Problem und eine Lösung zur Anfrage gefunden.

Ursache:
Der zu untersuchende String in a beinhaltete vorweg White-Spaces!

Lösung:
Mit dem Zusatz "\s*" werden diese ignoriert.
Code:
a='            HREF="myfile.html">myfile</A>'
regexp(a, '(?<=^(\s*HREF="))\w+\.\w+', 'match', 'once')


Besten Dank für deine Hilfe!!!
Gruß
Po²z
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.