アプリ版:「スタンプのみでお礼する」機能のリリースについて

スイマセン初心者で、正規表現についてほかのみなさんにとっては、簡単なんだと思いますけど、どうかご回答お願いします。

テキストファイルを読み込んで、ある文字列の、ある場所だけを、出したいです。
テキストは

#AAA#(aab acb dde)
#BBB#(001)
#AAA#(bca kme lmg)
#BBB#(002)

#AAA#の()の中身は適当な文字列で、他の文字が入ると考えての場合です。
この場合で、
#AAA#の文字列の、#AAA#と()を除いた文字列つまりこの場合だと、
aab acb dde
bca kme lmg
を出したいんです。
簡単な問題なんだと思いますけど、どうか回答お願いします。

A 回答 (3件)

以下のスクリプトを実行して下さい。


while line = DATA.gets
if /#AAA#\((.*)\)/ =~ line
print $1,"\n";
end
end
__END__
#AAA#(aab acb dde)
#BBB#(001)
#AAA#(bca kme lmg)
#BBB#(002)
---------------------------------
$1に取得したい文字が格納されています。
正規表現で、マッチした部分を()でくくると、マッチしたとき$1に()内文字が格納されています。
()が複数あれば、その()の順番対応に$1,$2,$3に格納されます。
    • good
    • 0
この回答へのお礼

ありがとうございます。
上手く実行できました。

また、理解しやすい説明ありがとうございます。
長い時間考えてたのがすぐ理解できました。

お礼日時:2007/05/30 22:28

ruby -n -e 'puts $1 if $_ =~ /#AAA#\((.*)\)/' < in_file > out_file



か?
ワンライナーで書くと Ruby っぽくないかも。
    • good
    • 0
この回答へのお礼

ワンライナーで書くやりかたは、まだあまりやったことないのですが、
もう少しrubyを理解できるようになったら是非挑戦してみたいです。

お礼日時:2007/05/30 22:32

多分こんな感じ



#AAA#\(([^)]+)\)
    • good
    • 0
この回答へのお礼

まさにこのとおりでできました。
ありがとうございます。

お礼日時:2007/05/30 22:33

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!