• 締切済み

正規表現について

正規表現につての質問です。 今テキストファイルに下記のような漢字と数字が並んでいます。 そこから、漢字一文字だけの行を抜き出してきたいのですが、うまくいきません。PerlとCygwinを使用しています。よろしくお願いします。 人584504122 情報542701982 商品510342870 日414551872 方347990908 者347069359 中339925319 表示330177395 的324961911 私323727263 検索291502623 見ル285226619 場合275698771 一256241900 利用253752129 年240881734 時239273060 前228762989 店225241510 登録224560617   ・   ・    ・ プログラム中身 #! /usr/bin/perl -w #テキストから指定した単語などとマッチすると、 #その単語を含んだ文を抜き出してくる。 while(<>){ s/ +//g; s/\s+//g; if(/^([亜-煕]|[一-龠]){1}[0-9]*/){ print; print "\n"; } }

みんなの回答

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

「漢字が表示されず、10個ぐらいの数字がでてくるだけでした。」って言われても, どんな結果か全くわからないんだよね. 漢字が入っていると文字コードが問題になりうるんだけど, そこは OK?

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

その正規表現は「最初が漢字である行」にマッチします. 後ろの [0-9]* が無意味になっています. 今の例だと「最初の方に漢字があってあとは全部数字」なので「2文字目が全部数字」, つまり /^.\d*$/ にマッチさせる方が簡単ではないかと.

csq26549
質問者

お礼

while(<>){ s/ +//g; s/\s+//g; if(/^.\d*$/){ print; print "\n"; } } でやってみたのですが、うまくいきませんでした・・・・ 漢字が表示されず、10個ぐらいの数字がでてくるだけでした。 何がダメなんでしょうか??

関連するQ&A

専門家に質問してみよう