Kotlinで複雑なテキストデータから数値を一括抽出する方法を完全解説!正規表現でログや文章から数字を取り出す
生徒
「ログファイルや文章の中にある数字だけを取り出したいときはどうすればいいんですか?」
先生
「そのようなときは、Kotlinの正規表現という機能を使うと便利です。文章の中から数字だけを探して取り出すことができます。」
生徒
「正規表現って難しそうなイメージがあります。」
先生
「最初は難しく感じますが、仕組みはとてもシンプルです。文章の中から特定のパターンを探すルールのようなものです。」
生徒
「例えばどんなことに使えるんですか?」
先生
「ログ解析、CSVデータ処理、文章から価格や数量を取り出す処理などでよく使われます。それではKotlinで数値を一括抽出する方法を順番に見ていきましょう。」
1. Kotlinでテキストから数値を抽出するとは
Kotlinでテキストデータから数値を取り出す処理は、データ処理やログ解析などで非常によく使われます。例えばサーバーログの中からエラーコードを取り出したり、文章の中から価格情報だけを取得したりする場合です。
通常の文字列操作だけで数字を取り出そうとすると、文字を一文字ずつ確認する必要があり非常に大変です。しかしKotlinの正規表現を使うと、数字のパターンを指定するだけで簡単に抽出できます。
正規表現とは、文字列のパターンを表す特別な書き方のことです。例えば数字だけを表す記号として「バックスラッシュd」という表現があります。これは数字一文字を意味します。
つまり正規表現を使うことで、文章の中にある数字だけを機械的に見つけて取り出すことができるのです。
2. Kotlinで正規表現を使う基本方法
KotlinではRegexクラスを使うことで正規表現を扱うことができます。Regexとは正規表現を扱うためのクラスです。クラスとはプログラムの機能をまとめた部品のようなものです。
まずは文章の中から数字を取り出す基本的なサンプルを見てみましょう。
fun main() {
val text = "商品Aの価格は1200円で、商品Bは980円です"
val regex = Regex("\\d+")
val numbers = regex.findAll(text)
for (num in numbers) {
println(num.value)
}
}
このプログラムでは「バックスラッシュdプラス」という正規表現を使っています。これは数字が一文字以上続くパターンを意味します。
findAllという関数は、文章の中にあるすべての一致する部分を探す機能です。
1200
980
このように文章の中から数値だけを取り出すことができます。
3. 複数の文章から数値をまとめて抽出する
実際のプログラムでは、複数行のデータやログファイルを処理することが多くあります。Kotlinではループ処理を使うことで、複数の文章から数値を一括抽出することができます。
fun main() {
val lines = listOf(
"CPU使用率 45%",
"メモリ使用量 3200MB",
"ディスク容量 500GB"
)
val regex = Regex("\\d+")
for (line in lines) {
val numbers = regex.findAll(line)
for (n in numbers) {
println(n.value)
}
}
}
45
3200
500
この方法を使うと、ログ解析やデータ分析のプログラムを簡単に作ることができます。
4. 小数やマイナスの数値も抽出する方法
実際のテキストデータには、小数やマイナスの数値が含まれていることもあります。例えば気温データや計算結果などです。
このような場合は、少し複雑な正規表現を使います。
fun main() {
val text = "今日の気温は-3.5度で、昨日は2.8度でした"
val regex = Regex("-?\\d+(\\.\\d+)?")
val numbers = regex.findAll(text)
for (n in numbers) {
println(n.value)
}
}
-3.5
2.8
この正規表現では次の意味があります。
マイナス記号は付いていても付いていなくてもよい数字。さらに小数点があれば小数部分も取得するという意味になります。
このように正規表現を調整することで、より現実的なデータ処理が可能になります。
5. 数値をIntやDoubleに変換する方法
抽出した数値は文字列のままでは計算ができません。そのため数値型に変換する必要があります。
KotlinではtoIntやtoDoubleという関数を使うことで簡単に変換できます。
fun main() {
val text = "注文数 15 個"
val regex = Regex("\\d+")
val match = regex.find(text)
if (match != null) {
val number = match.value.toInt()
println(number * 2)
}
}
30
このように数値に変換すると、計算や統計処理などのプログラムに利用できるようになります。
6. mapを使って数値をリストとして取得する
Kotlinではコレクション操作という便利な機能があります。コレクションとは複数のデータをまとめて扱う仕組みです。
mapという機能を使うと、抽出した数値をリストとしてまとめることができます。
fun main() {
val text = "テスト結果 85点 90点 78点"
val regex = Regex("\\d+")
val numbers = regex.findAll(text)
.map { it.value.toInt() }
.toList()
println(numbers)
}
[85, 90, 78]
このようにリストとして取得すると、平均値の計算や統計処理なども簡単に行うことができます。
7. Kotlinで数値抽出が役立つ実際の場面
Kotlinでテキストから数値を抽出する技術は、多くの場面で役立ちます。例えばログ解析ではエラーコードや処理時間を抽出することができます。
またデータ分析ではCSVやテキストレポートから数値データを取り出して集計することができます。
さらにWebスクレイピングでは、Webページの文章から価格やレビュー数などの数値情報を取得することが可能です。
このようにKotlinの正規表現とテキストデータ処理を組み合わせることで、複雑な文章の中から必要な数値だけを効率よく取得できるようになります。
特にログ解析、データ処理、自動化ツール、システム監視スクリプトなどでは必須ともいえる技術です。KotlinのRegexクラスを理解しておくと、テキスト処理のプログラムを書くときに非常に役立ちます。
Kotlinを基礎からしっかり学びたい人や、 Java経験を活かしてモダンな言語にステップアップしたい人には、 定番の入門書がこちらです。
基礎からわかるKotlinをAmazonで見る※ Amazon広告リンク
まとめ
Kotlinでテキストから数値を抽出する重要ポイント
今回の記事ではKotlinを使って複雑なテキストデータから数値を抽出する方法について詳しく解説しました Kotlinの文字列処理と正規表現を組み合わせることで文章ログレポートデータなどに含まれる数値を効率良く取り出すことができます 多くのプログラムではテキストデータ処理が必要になります 例えばログ解析データ分析システム監視自動化ツール開発などでは文章の中から数値だけを取り出して処理する場面が頻繁に発生します KotlinのRegex機能を理解しておくことでこのような処理をとても簡単に実装できるようになります
まず基本となるのは数字を表す正規表現の使い方です KotlinではRegexクラスを利用することで文章の中から特定のパターンを検索できます 例えば数字の並びを意味する正規表現を利用すると文章の中にある数値を一括で取得することが可能になります findAll関数を使えばテキストの中に存在するすべての数値を取得できます この方法はログファイル解析テキストデータ処理大量データ分析などで非常に役立ちます
また実際のデータには単純な整数だけではなく小数や負の値が含まれている場合もあります そのような場合には正規表現を少し拡張することで柔軟な数値抽出処理を実装できます マイナス記号を許可するパターンや小数点を含むパターンを組み合わせることで現実的なデータ解析に対応することができます Kotlinの正規表現は非常に強力でありログ解析データ収集文章解析など多くの分野で利用されています
さらに取得した数値は文字列のままでは計算できません そのためInt型やDouble型に変換することで計算処理や統計処理に利用することができます KotlinではtoIntやtoDoubleといった便利な関数が用意されているため簡単に型変換を行うことができます 数値変換を行うことで合計計算平均計算最大値最小値分析などさまざまなデータ処理が可能になります
数値抽出とコレクション処理の組み合わせ
Kotlinの大きな特徴としてコレクション処理の便利さがあります 正規表現で取得したデータはmap関数やtoList関数を利用することで簡単にリストへ変換できます リストとして数値データを保持しておくことでデータ分析処理統計処理グラフ作成などさまざまなプログラムに応用できます Kotlinの関数型スタイルの書き方を活用することでコードを短く読みやすく保つことができます
例えばログ解析ツールではサーバログから処理時間を抽出して平均処理時間を計算したりエラーコードを集計したりする処理が必要になります またシステム監視ツールではメモリ使用量や中央処理装置使用率などの数値をログから取得して記録することがあります このような場面でKotlinの正規表現と数値抽出処理は非常に重要な技術になります
Kotlin数値抽出処理のサンプルプログラム
fun main() {
val text = "売上 1200 円 利益 350 円 在庫 48 個"
val regex = Regex("\\d+")
val numbers = regex.findAll(text)
.map { it.value.toInt() }
.toList()
println(numbers)
val total = numbers.sum()
println("合計")
println(total)
}
[1200, 350, 48]
合計
1598
このようにKotlinでは数行のコードだけで文章から数値抽出集計処理まで実装できます Kotlinの正規表現テキスト処理数値変換コレクション操作を理解しておくとログ解析ツールデータ分析プログラム自動化スクリプト開発など多くの分野で応用できるようになります
生徒
今日はKotlinでテキストから数値を抽出する方法を学びました 文章の中にある数字を簡単に取り出せることがよく分かりました
先生
そうですね Kotlinの正規表現を理解するとログ解析やデータ処理のプログラムがとても書きやすくなります
生徒
正規表現は難しそうと思っていましたが数字のパターンを覚えるだけでも便利に使えると感じました
先生
その通りです 最初は数字抽出のような基本的な使い方から覚えていくと理解が深まります KotlinのRegexとテキスト処理を組み合わせることで多くのデータ処理プログラムを作ることができます
生徒
ログ解析ツールやデータ分析プログラムを作るときにも役立ちそうですね
先生
その通りです Kotlinの文字列処理正規表現数値変換コレクション操作を組み合わせることで実用的なプログラムが作れるようになります 今回学んだ数値抽出の技術はKotlinテキスト処理の基本としてぜひ覚えておきましょう
【未経験OK】Kotlinで始めるプログラミング入門|ゼロから「動く喜び」を体験する60分
「プログラミングを始めたい」を形にする。最新言語Kotlinで楽しむ、ものづくりの第一歩。
本講座は、プログラミング経験が全くない方のためのエントリー講座です。「コードを書くってどういうこと?」という基本から、世界中で使われている最新言語Kotlin(コトリン)を使って、実際にプログラムを動かすまでを体験します。難しい理屈よりも、まずは「自分の手で動かす楽しさ」を最短距離で実感していただきます。
具体的な体験内容と環境
【つくるもの】
簡単な言葉を入力すると自動で返答してくれる「対話型ミニプログラム」や、計算を自動化する「便利ツール」をゼロから作成します。黒い画面に自分の書いた文字が表示される瞬間は、最高の感動体験です。
【開発環境】
プロのエンジニアが実際に使っている開発ツールIntelliJ IDEA(インテリジェイ)をインストールします。ボタン一つで日本語化し、初心者でも迷わず操作できる「魔法の設定」を一緒に行います。
この60分で得られる3つの体験
プロと同じ道具を揃えることで、明日から一人でもプログラミングを続けられる環境が整います。
「変数」や「型」といった難しい言葉も、身近な例え話で解説。モヤモヤをゼロにします。
Kotlinは英語に近くて読みやすいのが特徴。自分でコードを読んで、間違いを見つけるコツも伝授します。
※本講座は、パソコン操作が不安な方でも安心して受講いただける完全マンツーマンです。あなたのペースに合わせて、一つずつ丁寧に進めていきます。
Kotlinで始めるプログラミング入門|ゼロから「動く喜び」を体験