Perl正規表現を使って文字を分割する方法

このQ&Aのポイント
  • Perlを使って文字列を分割する方法について説明します。
  • 正規表現を利用することで、指定した文字列のパターンに基づいて分割することができます。
  • 具体的な組み合わせや分割方法についても紹介します。
回答を見る
  • ベストアンサー

Perl 正規表現などを使って文字を分割したい

Perlを使って、下記データを分割したのですがうまくできません。 多分、正規表現などを使うとできそうな気がするのですが、分かりませんでした。 1つだけでも大歓迎ですので、できる方、教えてください。 特に、最初の2つだけでもできればとても、助かります!! 何卒、宜しくお願い致します。 ちなみに、文字コードは、UTF-8です。 分けたい組み合わせ(文字数が変わってもある程度汎用性があると助かります) ======== 漢字+数字 英字+カタカナ 漢字+数字+英字+カタカナ 例: ======== 表現100 Abcテレビ 非営利99AbcFFテレビ 日本語テキスト 出来上がり例: ======== 表現 100 ABC テレビ 非営利 99 AbcFF テレビ 日本語 テキスト

  • Perl
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • hara_peko
  • ベストアンサー率28% (11/38)
回答No.1

perldoc perlunicode に \p{...} の ...部分の指定の仕方が書かれています。 use encoding 'utf8'; foreach (<DATA>) { my @kanji; my @katakana; my @number; my @alphabet; chomp; push @kanji, ($_ =~ /(\p{Han}+)/g); push @katakana, ($_ =~ /(\p{Katakana}+)/g); push @number, ($_ =~ /(\d+)/g); push @alphabet, ($_ =~ /([a-zA-Z]+)/g); print join "\n", @kanji, @katakana, @number, @alphabet, "\n\n"; } __END__ 表現100 Abcテレビ 非営利99AbcFFテレビ 日本語テキスト

mai_540903
質問者

お礼

回答いただきありがとうございました!! とても、助かりました!!

関連するQ&A

  • 正規表現:  (111)-(222)-(333)

    正規表現:  (111)-(222)-(333) から (333)を取得したいと考えています。 ()で囲まれた数字のうち、最後のものを取得するというもので、 この、最後のという考えを実装することができずに困っています。 なぜ最後にこだわるかというと、以下のような例があるからです。 ◆ (111)english(222) ◆ (111)日本語(222)日本語 文字列中に含まれる()で囲まれた数字のうち、最後のものを取得する正規表現を教えてください。

  • 正規表現で漢字3文字「大◯◯」を検索したい。

    小説を保存したテキストファイルにある、漢字3文字熟語「大◯◯」を「Word2010」で一度に検索したいです。   例)大火事、大渋滞 など 正規表現を使用すれば可能でしょうか。 「大」あとに、ひらがなやカタカナが1文字くるなら (大)([あ-ん,ア-ン]) でいいと思うのですが、 質問1) 漢字の場合どうなりますか。検索した限りでは    (大)([亜-腕弌-熙])    (大)([一-龠])     で、「大」の後1文字以上漢字がある場合は検索できそうですが、これ以上はわかりませんでした。 質問2) 「大」の後が、2文字熟語<限定>で検索したい場合はどうなるのか。 質問3) 漢字3-4文字の例はあんまりないかもしれませんが、応用が効きそうなので、、、「大」の後、漢字1文字しかないものは含まないー漢字2文字<以上>の場合ーはどうなるのか。 質問4) 漢字の範囲を表す表現は上記のように複数見つかりましたが、一番いい方法というのはあるのでしょうか。使い分けとか有りますか。 を知りたいです。 以上をご存じの方、教えて下さい。 また、フリーソフトなど正規表現以外の方法があれば、それもアドバイスいただければ助かります。 何卒よろしくお願い致します。

  • 外国語の文字表現について

    たまにふと思うのですが・・・ 日本語には、『ひらがな』、『カタカナ』、『漢字』があり、『英語』、『数字』も使われています。 メール等を書くときに、強調したい部分は『カタカナ』や『英語』を使うことがありますよね。 また、歌詞で『英語』がたくさん使われていると、お洒落っぽく感じます。 外国語では、強調したいとき、気障っぽい表現をするときはどうしているのでしょうか? 日本語の場合は、『ひらがな』だけで文章を作ると、とても読みずらく、幼稚な感じがしますが 外国語だとそうはならないのでしょうか?

  • 漢字を含んだ正規表現

    お世話になってます。 漢字を含んだ文字列を正規表現でマッチさせたいのですが 以下のようなテキストから 「あいうえおあいうえお、あいうえおあいうえお、あいうえおあい あいうえおあいうえお、あいうえおあいうえお、あいうえおあいう hello,my name is tetetあいうえおあいうえおeららららら frisk02様あえおあいうえお、あいうえおあいうえお、あいうえお」 「frisk02様」もしくは「frisk02」(この部分は英字もしくは数字を含んだ文字列となります)をマッチして取得したいのですが 有効な正規表現がわかりません、教えてください。お願いします。

    • 締切済み
    • PHP
  • 秀丸正規表現

    日本語の正規表現での置換につまづきまくってます… 正しい指示方法を教えてください。 ※すべて漢字やひらがな、カタカナです。 ※置換したいのはアンダーバーの部分です。 置換したい表現1 ○○○,______××× ○○○,_________××× 置換したい表現2 -○○-_________× -○○-____________× よろしくお願いします。

  • 漢字などを正規表現でパターンマッチさせる方法?

    こんにちは,よろしくお願いします。 名前(姓と名に分けて)を入力してもらうフォームを作っています。 姓名を日本語,つまり,漢字,ひらがな,カタカナを全角(2バイト文字?)で入力してもらいたいと考えています。 ぜんぜんわからないのですが,パターンを次のように考えて, var pattern = "[亜-熙ぁ-んァ-ヶ]+"; if(seimei.match(pattern)){ 上記のようにやってみたらうまくいったように思えましたが,「蓬莱」や「紀香」などの漢字を入力するとマッチしません。 文字セットは”UTF-8”を使っています。 すべての漢字,ひらがな,カタカナをマッチさせるようにするにはどのようなパターンで行えばいいのでしょうか?教えてください。 よろしくお願いします。

  • 謎の文字列置換(正規表現)

    漢字かな、アルファベット(全角)、数字(半角)の混在した文章中で、二桁の数字のみ文字の前後に記号(例:♪)を付けたいとします。 正規表現に対応した置換ソフトやテキストエディタで 置換前:\b(\d{2})\b 置換後:♪$1♪ とすると、特定の文字の後ろにある二桁数字のみ検索から漏れて置換されないのですが、どこが間違っているのでしょうか。 <使用したテキストエディタ> k2editor <使用した置換ソフト> Speeeeed <置換から漏れる特定文字> 学、浜、工、田、修など <具体例>置換前 23 学23 23学 2323 浜23浜 <具体例>置換後 ♪23♪ 学23 ♪23♪学 2323 浜23浜

  • Perlを使った正規表現について

    テキストファイルを読み込んで、以下のルールに従った文字列だけを.txtで出力するプログラムを書いています。 具体的にはテキストファイル中の "text":"★★★","to_user" で囲まれている★★★の部分のみを抽出したいです。 そこで正規表現に触りだしたのですが、表現がうまくいっていないようで1週間ほどはまっています。。うまく出力できるように直しをいただけないでしょうか。 打ち明けてしまうと、★★★の部分はtwitterの呟き(日本語)になります。 以下がそのソースになります。よろしくお願いします。 print "Input file name: "; $ifname = <STDIN>; open(IN, $ifname); open(OUT, "> out.txt"); #出力ファイル while(<IN>){ if($ifname =" m/"test":(.*?),"to_user"/; next if($_ eq ""); print OUT "$_\n"; #書き出し } close(OUT); close(IN);

    • ベストアンサー
    • Perl
  • 【PHP 正規表現を使って文字列を抽出】

    いつもお世話になっております。 正規表現で行き詰っており、お知恵を拝借したいと 思います。 説明がわかりづらいかと思いますが、何卒ご教授お願いしたいと思います。 【↓こういった文字列から】 <img src="http://localhost/uploads/abc123.jpg" align="left" alt="" /><br /> <img src="http://localhost/uploads/def456.jpg" align="left" alt="" /><br /><br />日本語文字列や英語・数字など<br /><br /> imgタグが複数、HTMLタグ、日本語文字列が混ざった ものから、URLは複数あるのでURL毎に配列で取得し、 日本語文字列は日本語文字列だけで取得したいと思います。 最終的にこういうことができたらいいです・・。 $array[0]="http://localhost/uploads/abc123.jpg"; $array[1]="http://localhost/uploads/def456.jpg"; $damy="日本語文字列などなど"; 恥ずかしながら、私には複雑すぎて 全く分かりませんでした。 宜しくお願い致します。

    • ベストアンサー
    • PHP
  • 正規表現について

    こんにちは 正規表現を勉強中のものです 数字がカンマで連結された文字列(例:352549,352998,352933,352698,28309)を 調べる為の正規表現がわからなく困っております。 例の数字部分に、数字とカンマ以外が入っていたらfalseを返すようにしたいのですが、 「^[0-9\,]+$」 で対応できるかと思ったのですが、思い通りに行かず困っております。 わかる方がおられましたら、ご教授お願いできますでしょうか。 よろしくお願いいたします。

専門家に質問してみよう