指定された正規表現で始まるすべての配列要素の数値インデックスを返す strmatch と同等の関数はありますか ( string の代わりに?
背景: という文字列の配列がありますstrarray
。特定の を持たないすべての文字列を除外したいstrprefix
。特定のプレフィックスが存在する文字列の配列 ( strmatch func ) のインデックスを検索し、プレフィックスを含む行から新しい配列を構築する次のコード:
indexes = [];
n = strmatch(strprefix, strarray);
indexes = [indexes,n];
indexes = sort(indexes);
newarray = strarray(indexes);
問題なく動作しますが、これprefix
は文字列であり、代わりに定義済みの正規表現を使用したいと思います。
または、おそらくそのようなタスクを実行するためのより簡単な方法 (ワンライナー?) がありますか?
アップデート
私はregexp関数を知っています。文字列の配列から文字列を除外しようとしていますが、1 つまたは 2 つのステップでそれを行うのに苦労しています。これを行うための私の現在のコード(Matlabの正しいコーディング方法かどうかはわかりません)。
- ステップ 1.プレフィックスなしで文字列を空にします。
regexp(strarray,[prefix,'.*'],'match','once');
- ステップ 2. 空行のインデックスを取得する
emptyCells = cellfun(@isempty,array);
- ステップ 3. 空の行を削除する
array(emptyCells) = [];