Hi,
ich möchte einen String in einer Datei suchen. Nun ist es so, dass der String nach dem ich suchen möchte immer etwas anders heißt. z.B. mal abc42 dann abc56 usw. gibt es eine Möglichkeit in MatLab wie z.B. bei der Google-Suche bestimmte Zeichen durch Platzhalter wie '*' zu ersetzen? Konnte leider nichts in der Hilfe finden, wahrscheinlich weil ich nicht genau weiß wo ich suchen muss...
Danke!
Hi,
ich möchte einen String in einer Datei suchen. Nun ist es so, dass der String nach dem ich suchen möchte immer etwas anders heißt. z.B. mal abc42 dann abc56 usw. gibt es eine Möglichkeit in MatLab wie z.B. bei der Google-Suche bestimmte Zeichen durch Platzhalter wie '*' zu ersetzen? Konnte leider nichts in der Hilfe finden, wahrscheinlich weil ich nicht genau weiß wo ich suchen muss...
Danke!
Entweder einfach nach 'abc' suchen.
Dafür hab ich mir eine billige Funktion geschrieben die grep unter Linux nachempfunden ist
Code:
%% grep.m function % Search in a file or all files in a folder - similar like grep for linux
%
% usage: % expression='sum' % FileOrFolder='C:/Windows' % FileOrFolder='/home/user/logs' % FileOrFolder='/var/log/error.log'
%
% grep(expression,FileOrFolder) % % If no FileOrFolder is given, the current workdirectory will taken.
vielen Dank für deine Antwort! Leider hab ich mich falsch ausgedrückt (tut mir Leid, das kommt daher dass ich mich wirklich schlecht auskenne).
Ich habe die Daten aus der Textdatei breits eingelesen und bearbeitet. Nun habe ich als Ergebnis ein cell array Namens M. In diesem Cell Array steht in der zweiten Spalte in manchen (nicht allen) Zeilen abcx15 . Dabei ist das abc immer gleich x ist unterschiedlich und die Zahl ist auch verschieden.
Ich möchte mir die Zahlen auslesen. Dazu möchte ich erst einmal alle Zeilen suchen in denen abcx15 steht.
Meine Funktion dafür sieht bisher so aus:
Code:
function block = extractabc( M, targetCol, target )
Leider funktioniert das nicht. Wenn ich statt 'abc(\w*)' den kompletten String nach dem ich suche eingebe, dann funktioniert es. Ich weiß aber ja nicht, wie der komplette String heißt, sonst müsste ich nicht danach suchen. Also ergibt das keinen Sinn... statt 'abc(\w*)' habe ich auch alles mögliche andere ausprobiert, z.B. 'abc\w*', 'abc\d*', 'abc\d*\d*' usw.
Weiß jemand warum das nicht funktioniert? Ist nur meine Syntax falsch oder habe ich einen grundlegenden Fehler gemacht?
Ich bekomme keine Fehlermeldung, sondern das Ergebnis: X = []. Hätte aber natürlich gerne den Inhalt dieser Zelle dargestellt. Wenn ich den kompletten String eingebe funktioniert das wie gesagt auch.
Diese Notation ...\w* \*d gibt es für strcmp imho nicht, nur für regexp.
Wenn str = 'abcx34'; wobei str halt dein cell array ist wo du mit for durchläufst
Versuch es statt strcmp mit strfind(str,'abc') == 1
Und wenn du den 'abc' string gefunden hast, x = str2double( regexp(str,'abc.(\d+)','tokens','once') )
Code:
octave:14> str = 'abcx34';
octave:15> ifstrfind(str,'abc')==1
> x = str2double(regexp(str,'abc.(\d+)','tokens','once'))
> end
x = 34
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
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.