- 締切済み
正規表現について
正規表現につての質問です。 今テキストファイルに下記のような漢字と数字が並んでいます。 そこから、漢字一文字だけの行を抜き出してきたいのですが、うまくいきません。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"; } }
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- Tacosan
- ベストアンサー率23% (3656/15482)
「漢字が表示されず、10個ぐらいの数字がでてくるだけでした。」って言われても, どんな結果か全くわからないんだよね. 漢字が入っていると文字コードが問題になりうるんだけど, そこは OK?
- Tacosan
- ベストアンサー率23% (3656/15482)
その正規表現は「最初が漢字である行」にマッチします. 後ろの [0-9]* が無意味になっています. 今の例だと「最初の方に漢字があってあとは全部数字」なので「2文字目が全部数字」, つまり /^.\d*$/ にマッチさせる方が簡単ではないかと.
お礼
while(<>){ s/ +//g; s/\s+//g; if(/^.\d*$/){ print; print "\n"; } } でやってみたのですが、うまくいきませんでした・・・・ 漢字が表示されず、10個ぐらいの数字がでてくるだけでした。 何がダメなんでしょうか??