perl の文字列カウント
こんにちは。初質問になります。perのlプログラミングについての質問です。
ある文章の「文末」の文字列をカウントし、出力するプログラムをつくりたいと思っています。
以下の文字列カウントプログラムを元に作りたいのですが、正規表現の文末指定のつけどころが恥ずかしながらわかりません。
<テキストデータ例>
やまだくんはみかんを食べています!!たかしくんはりんごを食べています!!
ひろしくんは好きなみかんを食べています!!
??よしこさんは嫌いなりんごを食べていますか??
かなえさんはいつもぶどうを食べています(^-^)
ひろしくんはみかんが好きです(^-^)しかし、ゆうじくんはみかんは好きではありません(^-^)
ひろみさんはみかんとぶどうは嫌いです!!しかし、りんごは好きです。
たとえば上のテキストデータを読み込み
文末のビックリマーク、クエスチョンマークの文字列を検出し
個数をカウントし出力するするようなプログラムです。
<出力結果>
(^-^) 2
!! 2
?? 1
となるようにしたいです。
以下のプログラムだと文末に限らずリストにあてはまる全ての記号がカウントされてしまいます。
@arr = qw('(^-^)','!!','??' );
$fname = "input.txt";
open(IN,"$fname") || &error("Can't open $fname");
read(IN,$buff,-s IN);
close (IN);
foreach (@arr){
$cnt = scalar( () = $buff =~ /$_/g );
print "$_ $cnt\n";
}
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
あなたの言う「文末」とは?
改行の直前のことなら、複数行モードが使えます
http://perldoc.jp/docs/perl/5.16.1/perlreref.pod
文章の意味で区切るなら、まずは解析が必要です。
あと、メタ文字に注意
No.2
- 回答日時:
条件に行の末尾とあるので、正規表現に改行 (\n) を含めるのも一つのやり方です。
@arr = ('(^-^)','!!','??'); # @arr = qw('(^-^)','!!','??' ); は誤り
・・・
$cnt = () = $buff =~ /\Q$_\E\n/g;
なお、@arr の (^-^) の丸括弧が全角で<テキストデータ例>では丸括弧が半角、@arr の !! と ?? が半角で≪テキストデータ例>では全角になっているので、このままでは全くマッチしません。単なる誤記なのかもしれませんが、統一することが必要です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
GDBでデバッグするとき文字列の...
-
Malformed UTF-8 character
-
Perlで Right関数に近い処理を...
-
splitの逆の処理
-
CSVファイルの中で、「 , 」カ...
-
エクセルで数値を全角文字(カ...
-
カンマ区切りの数字をCSVフ...
-
EXCELからCSVにすると余計なカ...
-
CSVの定義
-
住宅にカナを入力する際に丁目...
-
何故、日本は未だに数字を3桁...
-
「何とかで始まり、何とかで終...
-
文字コードの%E3%80%とは何です...
-
Excel VBAでPDFファイルをMicro...
-
EXCEL VBA でCTRL+Fのダイア...
-
エクセルにMicrosoft Barcode C...
-
csvデータ ダブルクォーテ...
-
word差し込み印刷 半角カタカ...
-
openoffice calcで#DIV/0! の...
-
「abcで始まらない」を正規表現...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Malformed UTF-8 character
-
Perlで Right関数に近い処理を...
-
文字列と数字を含むセルから数...
-
[Perl] Pack関数について教えて...
-
GDBでデバッグするとき文字列の...
-
日本語文字列の指定長(byte)切出し
-
パイソンエラーについて
-
VBA like演算子について
-
トリッププログラム!?
-
splitの逆の処理
-
Perl(Windows)の文法について
-
メールヘッダのMIMEエンコード...
-
特定の文字列をHTMLタグに変換...
-
ASP.NETでエンコードの判定
-
perlで文字列を短く(圧縮)し...
-
正規表現での文字の抜き出し
-
cryptの使用方法
-
perlでのURL判定
-
VBS:文字列を元に外部リストか...
-
カートの送料設定を2個まで1個...
おすすめ情報