Chcę używać wyrażeń regularnych do wybierania nazw plików, które kończą się na _x.txt
. Myślałem, że mogę użyć wyrażenia regularnego *_x.txt
ale MATLAB jest oporny.
>> regexp( "asdfg_x.txt", "*_x.txt" )
ans =
[]
>> regexp( "asdfg_x.txt", "_x.txt" )
ans =
6
Dlaczego „* _x.txt” nie działa? Zdaję sobie sprawę, że nie jest to najlepsze wyrażenie regularne dla tego, co próbuję osiągnąć, ale właśnie to powinien praca. Wiem, że zrobiłem to w Linuksie i udało mi się to wypracować. Obecnie używam Windows 7, MATLAB 2009b.
Odpowiedzi:
1 dla odpowiedzi № 1Musisz wstawić kropkę przed gwiazdką, aby dopasować:
regexp( "asdfg_x.txt", ".*_x.txt" )
Potwierdzony z Octave 3.2.4
1 dla odpowiedzi nr 2
The *
jest znak specjalny w wyrażeniu regularnym, kwantyfikatorze. Ten znak powoduje, że poprzedni znak / grupa pasuje do 0 lub więcej razy. Więc ten kwantyfikator potrzebuje czegoś do powtórzenia, ale w twoim wyrażeniu nic nie ma.
wydaje mi się, że masz na myśli regexp( "asdfg_x.txt", ".*_x.txt" )
, gdzie temu .
jest kolejnym znakiem specjalnym wyrażenia regularnego, pasujące do każdego znaku z wyjątkiem znaków nowej linii. Więc .*
dopasuje serię dowolnych znaków.