Kotlinの正規表現(Regex)の使い方をやさしく解説!文字列操作の基本を初心者向けに学ぼう
生徒
「Kotlinで、文字列の中から特定の文字や言葉を探したり、置き換えたりする方法ってありますか?」
先生
「はい、Kotlinでは正規表現(せいきひょうげん)というしくみを使って、文字列の中身を柔軟に操作することができますよ。」
生徒
「正規表現ってなんだか難しそうです……」
先生
「最初は少しとっつきにくいかもしれませんが、Kotlinでは簡単に使えるようになっているので、基本からやさしく説明しますね!」
1. 正規表現とは?Kotlinでも使える文字列検索の便利なしくみ
正規表現(せいきひょうげん、英語ではRegex=Regular Expression)とは、「文字の並び方(パターン)」をルールとして決めて、文字列の中から一致する部分を探したり、置き換えたりできる方法です。
たとえば「数字だけ」「英字だけ」「ハイフン付きの電話番号みたいな形」など、“形”で検索できるのが特徴です。ふつうの検索(単語そのものを探す)より柔軟なので、入力チェックやデータの整理にもよく使われます。
Kotlinでは、Regexクラスを使うだけで正規表現を扱えます。まずは「数字が入っているか」を調べる超シンプルな例で感覚をつかみましょう。
初心者向け:まずは「数字があるか」を探してみる
[0-9]+ は「数字が1文字以上続く部分」という意味です。
fun main() {
val text = "abc123xyz"
val regex = Regex("[0-9]+") // 数字のかたまりを探すルール
println(regex.containsMatchIn(text)) // 見つかれば true
}
ここでは「123」の部分がルールに一致するため、結果はtrueになります。正規表現は、こうやって「探したい形」をルールとして書けるのが強みです。KotlinではRegex("ルール")の形で用意して使います。
2. Regexクラスの基本的な使い方(検索)
ここでは、文字列の中に特定のパターン(ルール)が含まれているかを調べる方法を紹介します。Kotlinの正規表現は、まずRegex("パターン")でルールを用意して、containsMatchIn()で「見つかったかどうか」を確認する流れです。
「数字が入っている?」「英字が入っている?」のように、文章の中身をざっくりチェックしたいときに便利です。
fun main() {
val text = "abc123xyz"
val regex = Regex("[0-9]+") // 数字が1つ以上ある部分を探す
val found = regex.containsMatchIn(text)
println("数字が含まれている? $found")
}
実行結果:
数字が含まれている? true
[0-9]は「0から9までの数字」、+は「1文字以上続く」を意味します。つまりこのパターンは「数字のかたまりがあるか?」を探しています。今回の文字列には123が入っているのでtrueになります。
初心者向け:もう1つだけミニ例(英字が入っているか)
同じ考え方で、英字が含まれているかもチェックできます。
fun main() {
val text = "123-456"
val regex = Regex("[a-zA-Z]+") // 英字が1つ以上ある部分を探す
println("英字が含まれている? ${regex.containsMatchIn(text)}")
}
この例は数字と記号だけなので、結果はfalseになります。まずは「含まれているか?」を判定できるようになると、正規表現の使いどころが一気に増えます。
3. findメソッドで実際に一致した文字列を取り出す
「含まれているかどうか」だけでなく、実際に見つかった文字(一致した部分)を取り出したいときはfind()を使います。find()は、文字列の中からパターンに一致する部分を探して、最初に見つかった1つを返してくれます。
また、見つからない可能性もあるので、結果はそのまま表示せずに?.valueのように「見つかったときだけ表示する」書き方にしておくと安心です。
fun main() {
val text = "ユーザーID: user_456"
val regex = Regex("[a-zA-Z0-9_]+")
val result = regex.find(text)
println("見つけた文字列: ${result?.value}")
}
実行結果:
見つけた文字列: user_456
Regex("[a-zA-Z0-9_]+")は「英字・数字・_(アンダースコア)が1文字以上続く部分」を探すルールです。今回の文字列では、user_456が最初に一致するため、それが取り出されます。
初心者向け:見つからなかったときの動きも確認しよう
一致するものがない場合、find()の結果はnullになります。
fun main() {
val text = "ユーザーID: ----"
val regex = Regex("[a-zA-Z0-9_]+")
val result = regex.find(text)
println("見つけた文字列: ${result?.value}")
}
この例では一致がないため、resultはnullです。?.valueを使っているので、エラーにならず「何も表示されない」形で安全に処理できます。
4. 正規表現で文字列を置き換えるreplaceの使い方
正規表現は、「見つける」だけでなく、一致した部分を別の文字に置き換えることもできます。Kotlinでは、文字列のreplace()メソッドにRegexを渡すことで、正規表現を使った置き換え処理が行えます。
この機能は、個人情報を隠したいときや、入力データを整えたいときなど、実務でもよく使われます。
fun main() {
val input = "電話番号: 080-1234-5678"
val regex = Regex("[0-9]{2,4}-[0-9]{2,4}-[0-9]{4}")
val masked = input.replace(regex, "XXX-XXXX-XXXX")
println(masked)
}
実行結果:
電話番号: XXX-XXXX-XXXX
replace()は、「正規表現に一致した部分」をまとめて指定した文字列に置き換えます。この例では、電話番号の形式に一致する部分だけを探し出し、XXX-XXXX-XXXXに差し替えています。
初心者向け:パターンの意味を分解してみよう
[0-9]{2,4}:2〜4桁の数字-:ハイフン- この組み合わせで「電話番号っぽい形」を表しています
正規表現を使えば、「形が合っている部分だけ」を安全に置き換えられます。単純な文字置換よりも、ミスが起きにくいのが大きなメリットです。
5. 複数の一致をすべて取り出すfindAll
find()は最初の1つだけを取り出しますが、文字列の中にある一致をすべて処理したい場合にはfindAll()を使います。findAll()は、一致した結果を順番に取り出せる仕組みになっており、繰り返し処理と相性が良いのが特徴です。
「文章の中に出てくる単語を全部取り出したい」「複数のデータをまとめてチェックしたい」といった場面でよく使われます。
fun main() {
val text = "apple, banana, orange123"
val regex = Regex("[a-zA-Z]+")
val results = regex.findAll(text)
for (match in results) {
println(match.value)
}
}
実行結果:
apple
banana
orange
Regex("[a-zA-Z]+")は「英字が1文字以上続く部分」を探すルールです。この文字列では、apple、banana、orangeの3つが順番に見つかり、for文で1つずつ取り出されています。
初心者向けの考え方
findAll()は「一致した結果の集合」を返します。1つずつ処理したいときは、今回のように繰り返し処理と組み合わせて使うと、正規表現の便利さを実感しやすくなります。
6. よく使う正規表現のパターン例
Kotlinの文字列処理で役立つ正規表現の例をいくつか紹介します。
[0-9]:数字[a-z]:小文字アルファベット[A-Z]:大文字アルファベット[a-zA-Z]:英字すべて\\d:数字([0-9]と同じ)\\w:英数字とアンダースコア\\s:空白.+:1文字以上のなんでもOK
パターンをうまく組み合わせれば、複雑なルールのチェックや文字列の抽出も可能になります。
7. Kotlinで正規表現を使うときの注意点
Kotlinで正規表現を使う際には、次のような点に気をつけましょう。
- エスケープ文字(
\\など)はKotlinの文字列内で2重になることがある - 正規表現の文法はシンプルに始めるのがコツ
- 大文字小文字を区別せずに検索したいときは、
Regex(pattern, RegexOption.IGNORE_CASE)と書く
最初は慣れが必要ですが、実用的な場面が多いので少しずつ使ってみましょう。
Kotlinを基礎からしっかり学びたい人や、 Java経験を活かしてモダンな言語にステップアップしたい人には、 定番の入門書がこちらです。
基礎からわかるKotlinをAmazonで見る※ Amazon広告リンク
まとめ
Kotlinでの正規表現の使い方を学ぶことで、文字列の中から特定の情報を柔軟に取り出したり、条件に応じて置き換えたりできるようになり、より精密で効率的な文字列処理が実現できるようになります。とくに、入力チェックやデータ抽出、フォーマット変換など、実際の開発現場で頻繁に登場する処理において正規表現は欠かせない存在です。今回の記事で学んだ検索方法、置き換え、複数マッチの抽出といった基本操作は、Kotlinの文字列処理を扱ううえでとても重要な基礎となり、幅広い場面で活用できます。
また、正規表現を扱う際には、パターンの書き方によって検索の精度や意図が大きく変わるため、特定の記号の意味やよく使う書き方を知っておくことが、より正確な実装につながります。たとえば数字や英字を検索する[0-9]や[a-zA-Z]、空白を表す\\s、英数字とアンダースコアを示す\\wなどは頻繁に利用され、複雑な文字列の判定にも応用できます。KotlinではRegexクラスが一貫して分かりやすい構造になっているため、初心者でも扱いやすく、段階的に活用範囲を広げることができます。
また、正規表現は単なる検索だけにとどまらず、文字列をまとめて置き換えたり、データから必要な部分だけを抽出する際にも力を発揮します。特に、複数一致を取り出すfindAll()、最初の一致を取得するfind()、パターンを見つけて置換するreplace()などは、日常的な処理を効率化する強力なメソッドです。こうした特徴を理解しておくことで、煩雑になりがちな文字列操作が自然と整理され、処理の流れも見やすくなります。
下に記載したサンプルコードでは、記事内容をふりかえりながら、正規表現の組み合わせによる応用例を確認できます。さまざまなパターンを組み合わせることで、自分の目的に合わせた柔軟な文字列処理が可能になります。
サンプルコードでふりかえり
fun main() {
// ひらがな・カタカナを含む文から日本語部分だけを抽出する正規表現
val text = "なまえ:Taro と でんわばんごう 090-1234-5678 を 登録"
val regexJapanese = Regex("[ぁ-んァ-ヶ一-龠]+")
val matches = regexJapanese.findAll(text)
println("抽出した日本語:")
for (m in matches) {
println(m.value)
}
// 電話番号をマスクする置換例
val phoneRegex = Regex("[0-9]{2,4}-[0-9]{2,4}-[0-9]{4}")
val masked = text.replace(phoneRegex, "XXX-XXXX-XXXX")
println("マスク後の結果: $masked")
// 英数字だけを取り出す検索例
val alnumRegex = Regex("[a-zA-Z0-9]+")
val alnumFind = alnumRegex.findAll(text)
println("抽出した英数字:")
alnumFind.forEach { println(it.value) }
}
このように、一つの文字列から日本語・英数字・数字パターンなどを自在に切り分けられるため、データ入力の検証、ログ解析、文章解析など、多様な場面で役立ちます。慣れてくると、複雑なパターンも組み合わせられるようになり、より精密なテキスト処理へと進むことができます。Kotlinの正規表現は機能が豊富で扱いやすいため、基礎さえ理解できれば実践での応用が広がります。
生徒
「正規表現ってむずかしそうだと思っていたけれど、数字を探したり日本語だけを取り出したりできて、思ったよりも便利だと感じました。」
先生
「そのとおりです。文字列の操作では、決まったパターンに当てはまる部分を見つけたり置き換えたりすることがよくありますから、正規表現を覚えると表現できる範囲が一気に広がりますよ。」
生徒
「findAllでたくさんの部分を取り出せたり、replaceで電話番号をまとめて変えたり、いろんな操作ができて驚きました。自分のアプリでも使えそうです。」
先生
「役に立ちますよ。入力チェックやデータ分析のような場面でも活躍しますし、基礎を理解しておけば複雑な条件にも挑戦できるようになります。」
生徒
「これからはパターンの意味をひとつずつ覚えて、もっと自由に文字列を扱えるようになりたいです。」
先生
「その意欲が大事ですね。今後も少しずつ練習して、Kotlinの正規表現をしっかり使いこなしていきましょう。」
【未経験OK】Kotlinで始めるプログラミング入門|ゼロから「動く喜び」を体験する60分
「プログラミングを始めたい」を形にする。最新言語Kotlinで楽しむ、ものづくりの第一歩。
本講座は、プログラミング経験が全くない方のためのエントリー講座です。「コードを書くってどういうこと?」という基本から、世界中で使われている最新言語Kotlin(コトリン)を使って、実際にプログラムを動かすまでを体験します。難しい理屈よりも、まずは「自分の手で動かす楽しさ」を最短距離で実感していただきます。
具体的な体験内容と環境
【つくるもの】
簡単な言葉を入力すると自動で返答してくれる「対話型ミニプログラム」や、計算を自動化する「便利ツール」をゼロから作成します。黒い画面に自分の書いた文字が表示される瞬間は、最高の感動体験です。
【開発環境】
プロのエンジニアが実際に使っている開発ツールIntelliJ IDEA(インテリジェイ)をインストールします。ボタン一つで日本語化し、初心者でも迷わず操作できる「魔法の設定」を一緒に行います。
この60分で得られる3つの体験
プロと同じ道具を揃えることで、明日から一人でもプログラミングを続けられる環境が整います。
「変数」や「型」といった難しい言葉も、身近な例え話で解説。モヤモヤをゼロにします。
Kotlinは英語に近くて読みやすいのが特徴。自分でコードを読んで、間違いを見つけるコツも伝授します。
※本講座は、パソコン操作が不安な方でも安心して受講いただける完全マンツーマンです。あなたのペースに合わせて、一つずつ丁寧に進めていきます。
Kotlinで始めるプログラミング入門|ゼロから「動く喜び」を体験