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で Right関数に近い処理を...
-
メールヘッダのMIMEエンコード...
-
CSVファイルの中で、「 , 」カ...
-
マクロを使ってフォルダー内に...
-
英数字のみ全角から半角に変換
-
「何とかで始まり、何とかで終...
-
エクセルで数値を全角文字(カ...
-
EXCELからCSVにすると余計なカ...
-
エクセルにMicrosoft Barcode C...
-
カンマ区切りの数字をCSVフ...
-
各項目がダブルクォーテーショ...
-
Excel VBAでPDFファイルをMicro...
-
住宅にカナを入力する際に丁目...
-
csvデータ ダブルクォーテ...
-
CSVの定義
-
正規表現で、特定の文字列を含...
-
IEからEdgeへの移行に伴うIMEの...
-
VBA 置換文字がみつからない時
-
Accessのテキストボックスの入...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
パイソンエラーについて
-
Malformed UTF-8 character
-
Perlで Right関数に近い処理を...
-
splitの逆の処理
-
GDBでデバッグするとき文字列の...
-
数字を文字列に変換し短縮化する
-
文字列と数字を含むセルから数...
-
日本語文字列の指定長(byte)切出し
-
メールヘッダのMIMEエンコード...
-
Perl(Windows)の文法について
-
プログラミング HSPの変数につ...
-
VBA like演算子について
-
Perl/Tk使用時のUTF-8コード文...
-
perlを使用しての特定行抽出に...
-
perlでのURL判定
-
perlで文字列を短く(圧縮)し...
-
cryptの使用方法
-
外部ファイルに「漢字(かんじ...
-
リストデータの検索でのエラー...
-
文字列操作:最後の4文字を取...
おすすめ情報