こちらが基本骨格です。ただし、正しい正規表現を使用して値を抽出してください;-)
はい、上記の Dorin の正規表現と一致すると、一度に 1 つの値が得られます。token
Mathworks のこの例のように を追加できます。サンプル:
str = ['if <code>A </code> == x<sup>2 </sup>, ' ... '<em>disp(x) </em>']
str = if <code>A </code> == x<sup>2 </sup>, <em>disp(x) </em>
expr = '<(\w+).*?>.*?</\1>';
[tok mat] = regexp(str, expr, 'tokens', 'match');
tok{:}
ans = 'code'
ans = 'sup'
ans = 'em'
上記のコードでは、実際にループする必要はなく、テキスト全体を 1 つの文字列として処理できます。できれば、文字列の制限に達しないことを願っています ...... しかし、ループしたい場合、またはループする必要がある場合は、ロディの正規表現と一致のみを使用した次のサンプル。
fid = fopen('data.txt');
dataText = fgetl(fid);
while ~feof(fid)
ldata = textscan(dataText,'*%d#*');
X = (ldata, '#[A-z]*', 'match')
Cellarray = X{1}
end
Disp(X)
fclose(fid);