0

次のコードがあり、一致する式を含む行全体を保存したいのですが、現在、式自体しか保存できません。

expr='\hello';
fileread = regexp(filetext, expr, 'match');
fid = fopen('data.txt', 'wt');
fprintf(fid, '%s\n',fileread{:});

私のファイルが含まれているとします:

 Hello,my name is X
 X hello 
Not this line

私のファイル data.txt ストア

hello
hello

式を含む行全体の代わりに。必要な data.txt

Hello,my name is X
     X hello

私は何を間違っていますか?

4

2 に答える 2

0

あなたが間違っているのは、MATLABregexp関数を正しく使用していないことです。このサイトの「'match' キーワードを使用して部分文字列を返す」の下を見ると、得られた結果がコードの記述に期待されるものであることがわかります (指定した正規表現に一致する入力文字列の部分を返します)。 )。私は提案を投稿するつもりでしたが、誰かが私を打ち負かしました;-)。幸運を。

于 2013-08-05T21:11:58.703 に答える
0

regexp 関数を操作する方法に基づいて、すべてのファイル テキストが 1 つの変数に含まれていると仮定します。変数が次の形式をとるとします。

my name is hello there
Hello,my name is X
 X hello
 Not this line

参考までに、この変数を次のように作成しました。sprintf

string = sprintf('my name is hello there\nHello,my name is X\n X hello\n Not this line')

次の正規表現を使用して、hello を含む行を抽出できます。

[~,~,~,d] = regexp(string, '.*?[H|h]ello.*?\n')

結果は、次のように cell 配列から取得できます。

>> d{1}

ans =

my name is hello there


>> d{2}

ans =

Hello,my name is X


>> d{3}

ans =

 X hello

いくつかの遅延量指定子を使用したことに注意してください。詳細を知りたい場合は、このリンクの貪欲さの代わりに怠惰.*?をチェックしてください: http://www.regular-expressions.info/repeat.html

于 2013-08-05T21:07:17.217 に答える