Kann jemand erklären, was MATLAB mit null Bytes (x00
) in regulären Ausdrücken macht?keine Bytes in Regexp MATLAB
Beispiele:
>> regexp(char([0 0 0 0 0 0 0 1 0 0 10 0 0 0]),char([0 0 0 0 46 0 0 10]))
ans =
1 % current
4 % expected
>> regexp(char([0 0 0 1 0 0 0 1 0 0 10 0 0 0]),char([1 0 0 0 46 0 0 10]))
ans =
4 % current
4 % expected
>> regexp(char([0 0 0 1 0 0 0 1 0 0 10 0 0 0]),char([0 0 0 0 46 0 0 10]))
ans =
[] % current
[] % expected
>> regexp(char([0 0 0 0 10 0 0 1 0 0 10 0 0 0]),char([0 0 0 0 46 0 0 10]))
ans =
1 % current
[] % expected
>> regexp(char([0 0 0 0 0 0 0 1 0 0 10 0 0 0]),char([1 0 0 0 46 0 0 10]))
ans =
[] % current
[] % expected
Die Antwort könnte einfach sein, regelmäßige MATLAB Ausdruck nicht nicht druckbare Zeichen gemeint ist, zu handhaben, aber ich würde annehmen, dass es Fehler wäre, wenn dies der Fall war.
EDIT: Die 46 wird voraussichtlich wie in der Regex-Wildcard sein.
EDIT2:
>> regexp(char([0 0 0 0 50 0 0 100 0 0 90 0 0 0]),char([0 0 46 0 0 90]))
ans =
1 9
ich es realisiert könnte 10 haben einen besonderen Charakter zu sein, so das man nur druckbare und nul Bytes hat. Ich würde erwarten, dass diese nur mit 9 übereinstimmt, weil das fünfte Zeichen 50
nicht mit 0
übereinstimmt.
Warum erwarten Sie Ihre erste Beispiel, um '4' zurückzugeben und Ihr viertes Beispiel, um' [] 'zurückzugeben? Sie scheinen mir einen Sinn zu ergeben. Im ersten Fall ist das Muster "NUL NUL NUL. NUL NUL' wird am Anfang der Zeichenfolge "NUL NUL NUL NUL NUL NUL" entsprechen. – eigenchris
@eigenchris Ich würde denken, es würde nur passen 4 wegen der 10 am Ende des Musters sollte nicht die 1 in beiden Fällen übereinstimmen, oder? – horriblyUnpythonic
Sie haben Recht. Der Newline-Charakter verhielt sich nicht so, wie ich es zuerst erwartet hatte. Bis jetzt hat mich das auch ratlos gemacht. – eigenchris