あるクラスの受講生100人に、「メールで年齢を送って下 さい」とお願いしたところ、次のようなリストが得られた [email protected] 私は19歳です。 [email protected] 20才 [email protected] 年齢は21です。 [email protected] 19さいです。 [email protected] 山本太郎20才。 [email protected] 19 [email protected] 年齢は19です。 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ このリストを年齢別に集計したいのだが、 どうすればいいだろうか? まず、空白をタブに置換して、エクセルにコピーしてから、並べ替 えようとしても、年齢の位置がまちまちなので、うまく行かない。 [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] ・・・・・・・・・・・・・・・・・ ・・・・・・・・・・・・・・・・・ 19 19さいです。 20才 山本太郎20才。 私は19歳です。 年齢は19です。 年齢は21です。 ・・・・・・・・・・・・・・ ・・・・・・・・・・・・・・ もしも、右側の列から、数字だけを切り出して、新しい列を作 ることができれば、年齢で並べ替えることができるだろう。 [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] ・・・・・・・・・・・・・・・・・ ・・・・・・・・・・・・・・・・・ 19 19 20 20 19 19 21 ・・・ ・・・ 19 19さいです。 20才 山本太郎20才。 私は19歳です。 年齢は19です。 年齢は21です。 ・・・・・・・・・・・ ・・・・・・・・・・・ こういう時こそ、正規表現による後方参照の出番! まず、元のデータで、文字列の中の年齢(数字)だ けを取り出すにはどうすればいいだろうか? 例えば、先ほどのデータは下のような正規表現で 年齢を他の部分から区別することができる。 ^[^0-9]+[0-9]+.*$ 行の先頭 数字以 外の文 字列 数字の 連続 残りの 全ての 文字列 行の終端 [email protected] 私は19歳です。 [email protected] 20才 ................................ ..................... 正規表現で、年齢を他と区別することはできたが、それぞれ異な る検索結果を置換文字列にするにはどうすればいい? 検索文字列 ^[^0-9]+[0-9]+.*$ 上の囲みの中の 正規表現が各行 の年齢とマッチ [email protected] 私は19歳です。 [email protected] 20才 [email protected] 年齢は21です。 [email protected] 19さいです。 [email protected] 山本太郎20才。 [email protected] 19 [email protected] 年齢は19です。 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 置換文字列には、検 索文字列でマッチした 数字そのものを持って きたい 19 20 21 19 20 19 19 検索文字列に後方参照を使うことで、各要素がマッチした文字列を、 置換文字列として使うことができる。 ( )で囲まれた部分に左から番号をつけて、置換文字列に使う ^([^0-9]+)([0-9]+).*$ ¥1 行の先頭 検索文 字列 ¥2 数字以外 の文字列 数字の 連続 残りの 文字列 行の終端 置換文字列を ¥2 [email protected] 私は19歳です。 [email protected] 20才 [email protected] 年齢は21です。 にすると、 19 20 21 ¥2に対応する数字(年 齢)と置換される 正規表現の後方参照をつかうことにより、元のリストから、 年齢を切り出すことが出来た 検索文字列 ^([^0-9]+)([0-9]+).*$ 対象とするデータ [email protected] 私は19歳です。 [email protected] 20才 [email protected] 年齢は21です。 [email protected] 19さいです。 [email protected] 山本太郎20才。 [email protected] 19 [email protected] 年齢は19です。 置換文字列 ¥2 置換結果 19 20 21 19 20 19 19 今日の課題:「[email protected]<タブ>20<タブ>山本太郎20才。」のような 置換結果を得るための検索文字列と置換文字列を答えなさい。
© Copyright 2024 ExpyDoc