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.2
- 回答日時:
条件に行の末尾とあるので、正規表現に改行 (\n) を含めるのも一つのやり方です。
@arr = ('(^-^)','!!','??'); # @arr = qw('(^-^)','!!','??' ); は誤り
・・・
$cnt = () = $buff =~ /\Q$_\E\n/g;
なお、@arr の (^-^) の丸括弧が全角で<テキストデータ例>では丸括弧が半角、@arr の !! と ?? が半角で≪テキストデータ例>では全角になっているので、このままでは全くマッチしません。単なる誤記なのかもしれませんが、統一することが必要です。
No.1
- 回答日時:
あなたの言う「文末」とは?
改行の直前のことなら、複数行モードが使えます
http://perldoc.jp/docs/perl/5.16.1/perlreref.pod
文章の意味で区切るなら、まずは解析が必要です。
あと、メタ文字に注意
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# [C言語] コメント文字列を無視して、数値データを読み込むプログラム部分について 5 2022/10/05 11:03
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- Excel(エクセル) countif関数について質問 4 2022/06/14 12:11
- Java Java 南京錠 2 2023/02/04 11:46
- システム CSVファイルのマッピング処理の省力化 1 2022/11/24 00:01
- その他(プログラミング・Web制作) プログラミング pythonの問題について 2 2022/04/19 00:41
- その他(IT・Webサービス) 文字を種類ごとに分けてカウントしてくれるサイトなどご存知だったら教えてください。 私はあるゲームの確 1 2022/11/23 18:53
- C言語・C++・C# C#の問題です。 文字列型の配列 s[100] にキーボードから入力された100文字以内の文字列(単 2 2022/06/22 15:18
- Perl perlでリテラル値はメモリにどのように格納されているか? 1 2023/01/15 20:45
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
パイソンエラーについて
-
文字列と数字を含むセルから数...
-
perlを使用しての特定行抽出に...
-
リストデータの検索でのエラー...
-
pythonエラー
-
全角入力
-
GoogleAppsScript文字列置換の...
-
全角/半角キーをSendkeys関数で...
-
住宅にカナを入力する際に丁目...
-
CSVファイルの中で、「 , 」カ...
-
VBA EXCEL あるセルの中の一...
-
バッチファイルの正規表現を利...
-
マクロを使ってフォルダー内に...
-
メールのcsv添付ファイルの種類...
-
正しいメールアドレスの形式で...
-
プログラミングでは、半角括弧...
-
VBAの文字列の中に”(全角のダブ...
-
エクセルの区切り位置の設定方法
-
C#で空白行を削除する方法
-
メモ帳からエクセルにセル区切...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
パイソンエラーについて
-
Perlで Right関数に近い処理を...
-
Malformed UTF-8 character
-
Perl(Windows)の文法について
-
日本語文字列の指定長(byte)切出し
-
splitの逆の処理
-
メールヘッダのMIMEエンコード...
-
数字を文字列に変換し短縮化する
-
Perl/Tk使用時のUTF-8コード文...
-
文字列と数字を含むセルから数...
-
GDBでデバッグするとき文字列の...
-
perlを使用しての特定行抽出に...
-
プログラミング HSPの変数につ...
-
perlで文字列を短く(圧縮)し...
-
関数chop
-
CSVファイルの中で、「 , 」カ...
-
英数字のみ全角から半角に変換
-
エクセルで数値を全角文字(カ...
-
EXCELからCSVにすると余計なカ...
-
住宅にカナを入力する際に丁目...
おすすめ情報