私はこのようなセル配列3x1を持っています:
name1 = text1
name2 = text2
name3 = text3
そして、それを1x2の個別のセル、たとえばname1、text1に解析したいと思います。将来的には、text1を他の文字列と比較するための文字列として扱いたいと思います。どうすればいいですか?私は正規表現とトークンを試していますが、そのための適切な式を書くことができません。誰かがそれを手伝ってくれるなら、私は感謝します!
このコード
input = {'name1 = text1';
'name2 = text2';
'name3 = text3'};
result = cell(size(input, 1), 2);
for row = 1 : size(input, 1)
tokens = regexp(input{row}, '(.*)=(.*)', 'tokens');
if ~isempty(tokens)
result(row, :) = tokens{1};
end
end
結果を生み出す
result =
'name1 ' ' text1'
'name2 ' ' text2'
'name3 ' ' text3'
等号の周りの空白は保持されることに注意してください。正規表現を調整することで、この動作を変更できます'([^\s]+) *= *([^\s]+)'
。
result =
'name1' 'text1'
'name2' 'text2'
'name3' 'text3'
編集:user1578163によるコメントに基づいています。
Matlabは、貪欲でない数量詞もサポートしています。たとえば'(.*?) *= *(.*)'
、テキストにスペースが含まれている場合、正規表現(アスタリスクの後の疑問符に注意)は機能します。変身します
input = {'my name1 = any text1';
'your name2 = more text2';
'her name3 = another text3'};
の中へ
result =
'my name1' 'any text1'
'your name2' 'more text2'
'her name3' 'another text3'