-
Java正規表現の文字クラス入門:文字セットからマッチングする方法
Javaの正規表現における文字クラスは、角括弧「[ ]」を使って定義します。文字クラスは、指定された文字の集合(セット)の中から1文字にマッチします。例えば、正規表現 [abc] は「a」「b」「c」のいずれか1文字にマッチします。同様に、[a-z] は小文字のaからzまでの範囲に含まれる任意の1文字にマッチします。文字クラスの否定(^)また、角括弧内の先頭に「^」を付けると否定を意味し、[^a-z] のように書くことで「小文字アルファベット以外の文字」にマッチさせることができます。この機能を使うと、特定の文字種以外を簡単に抽出・カウントできます。例1:小文字アルファベットの出現回数を数えるi
-
Java正規表現で単語全体に一致させる方法:\b(単語境界)メタ文字の使い方
Javaの正規表現において、メタ文字「\b」は単語境界に一致します。具体的には、最初の単語文字の直前、最後の単語文字の直後、そして単語文字と非単語文字の間に一致します。 そのため、特定の単語全体に一致させたい場合は、対象となる単語を前後から単語境界メタ文字で囲む必要があります。 \btest\b このパターンを使うことで、「test」という単語だけを正確に検出でき、「testing」や「contest」のように「test」が部分文字列として含まれる単語は誤って一致しなくなります。 サンプルコード 以下のJavaプログラムは、入力された文字列の中に「test」という単語が何回出現するかをカウン
-
Java正規表現の非キャプチャグループとは?キャプチャグループとの違いと使い方を解説
Javaの正規表現では、キャプチャグループ(capturing group)を使うことで、複数の文字をひとつのまとまり(ユニット)として扱うことができます。グループ化したい文字列は、括弧 () の中に記述するだけです。例えば、次のようなパターンを見てみましょう。(.*)(\d+)(.*)このように複数のグループを含むパターンでマッチングを行うと、各グループのマッチ結果が個別に記録されます。結果を取得するには、group() メソッドにグループ番号(1、2、3…)を渡します。なお、グループ0 はマッチした文字列全体を表します。キャプチャグループの使用例import java.util.Scann
-
【Java】正規表現でマッチした文字列の位置と長さを取得する方法
Javaで正規表現によるマッチングを行う際、「どの位置でマッチしたのか」「マッチした文字列は何文字なのか」を知りたいケースはよくあります。java.util.regex.Matcherクラスには、こうした情報を取得するための便利なメソッドが用意されています。 start()メソッドとend()メソッド start()メソッドは、マッチが成立した場合に、その開始位置(インデックス)を返します。同様に、end()メソッドは、マッチの終了位置を返します。 したがって、以下のようにマッチ情報を求めることができます。 マッチの開始位置:start()メソッドの戻り値 マッチした文字列の長さ:end()
-
【Java】正規表現に一致したすべての文字列をリストとして取得する方法
Javaの標準APIには、正規表現に一致したすべての文字列を一括で取得するメソッドは用意されていません。そのため、ArrayListなどのリストを用意し、whileループの中でMatcher#find()によって一致を順番に検出しながら、group()で取り出した結果をリストへ追加していくのが定番の手法です。 実装例 import java.util.ArrayList; import java.util.Iterator; import java.util.Scanner; import java.util.regex.Matcher; import java.util.regex.Patt
-
【Java】正規表現で別の一致結果の中からさらに一致を見つける方法
Javaの正規表現(java.util.regex)を使って、あるパターンに一致した文字列の中から、さらに別のパターンに一致する部分を抽出したい場合があります。このような「入れ子のマッチング」を実現するには、まず外側のパターンに一致する正規表現をコンパイルしてマッチを見つけ、その結果(group()で取得した文字列)を、内側のMatcherオブジェクトへの入力として渡します。 処理の流れ 手順は以下のとおりです。 外側のパターンを Pattern.compile() でコンパイルし、対象文字列に対して Matcher を作成する。 find() メソッドで外側のパターンに一致する部分を順番に
-
Java正規表現で一致した文字列をすべて置き換える方法|replaceAll()の使い方
Javaで正規表現を扱う際、入力文字列の中からパターンに一致した部分を別の文字列へ置き換えたいケースはよくあります。そのような場合には、MatcherクラスのreplaceAll()メソッドを使用します。 基本的な手順は以下のとおりです。 Pattern.compile()メソッドで正規表現をコンパイルし、Patternオブジェクトを作成する Patternオブジェクトのmatcher()メソッドに入力文字列を渡し、Matcherオブジェクトを取得する MatcherオブジェクトのreplaceAll()メソッドを呼び出して、一致したすべての箇所を置換する replaceAll()メソッド
-
【Java入門】正規表現の名前付きキャプチャグループの使い方
正規表現における名前付きキャプチャグループとは、マッチした各グループに名前を付け、その名前を使って参照できる機能です。JavaではSE 7(Java 7)からこの機能がサポートされています。 名前付きキャプチャグループの基本構文 名前付きキャプチャグループは、次のように (?<name>パターン) の形式で定義します。 (?<globalCode>[\d]{2})-(?<nationalCode>[\d]{5})-(?<number>[\d]{6}) マッチ結果は、Matcher クラスの group(名前) メソッドを使って取得できます。インデ
-
Javaの正規表現(java.util.regex)でテキストを分割する方法|split()メソッドの使い方
Javaでは、正規表現を利用して文字列を簡単に分割することができます。Stringクラスのsplit()メソッドは、引数として正規表現を受け取り、入力テキストをトークンに分割して、その結果を文字列配列(String[])として返します。サンプルコード:Stringクラスのsplit()メソッドを使う以下の例では、ユーザーから入力されたテキストを、数字(\d)を区切り文字として分割しています。import java.util.Scanner; public class Example{ public static void main(String[] args) { Sc
-
Java正規表現を使った複数行テキストの照合方法
Javaで複数行にわたる入力データを正規表現で照合・検索するには、文字列を行ごとに分割してから、各行に対してパターンマッチングを実行するのが効果的です。以下の手順に従って実装できます。複数行照合の手順対象となる入力文字列を取得します。splitメソッドの引数に「\r?\n」を渡し、文字列を改行ごとに分割してトークン配列を作成します。Patternクラスのcompile()メソッドを使用して、必要な正規表現をコンパイルします。matcher()メソッドを呼び出してMatcherオブジェクトを取得します。forループ内でfind()メソッドを使い、配列の各要素(各行)に対してマッチングを実行します
-
【Java】正規表現の文字クラスで否定を表現する方法([^ ]の使い方)
Javaの正規表現では、文字クラスを角括弧「[ ]」で定義します。この部分式は、指定した文字の集合の中から任意の1文字にマッチします。例えば、正規表現「[abc]」は a、b、c のいずれか1文字にマッチします。また、「[a-z]」のように範囲を指定すれば、aからzまでの間の任意の1文字にマッチさせることができます。否定文字クラス([^ ])とは文字クラスには否定形があり、「[^ ]」のように角括弧の中にキャレット(^)を記述して定義します。この形式は、指定した文字集合に含まれない1文字にマッチします。例えば、正規表現「[^abc]」は a、b、c 以外の任意の1文字にマッチします。同様に「[
-
Java正規表現の文字クラス:範囲指定([a-z]・[^A-Z])の使い方を解説
Javaの正規表現における文字クラスは、角括弧「[ ]」を使って定義します。この部分式は、指定された文字の集合の中から1文字にマッチします。例えば、正規表現「[abc]」は、a、b、cのいずれか1文字にマッチします。文字クラスでは範囲指定も可能です。「[a-z]」のようにハイフンで範囲をつなぐと、アルファベットのaからzまでのいずれか1文字にマッチします。また、先頭に「^」を付けた「[^A-Z]」は、大文字アルファベット以外の1文字にマッチする否定形のパターンになります。サンプルコード1:小文字(a〜z)の出現数をカウントするimport java.util.Scanner; import j
-
Java正規表現の文字クラス:和集合(union)の使い方をわかりやすく解説
Javaの正規表現における文字クラスは、角括弧「[ ]」を使って定義されます。この部分式は、指定された文字セット(候補となる文字の集まり)の中から1文字にマッチします。たとえば、正規表現 [abc] は、「a」「b」「c」のいずれか1文字に一致します。文字クラスの和集合(union)という書き方を使うと、指定した複数の範囲のどれかに含まれる文字にマッチさせることができます。つまり、[a-z[0-9]] という式は、小文字のアルファベット(a〜z)または数字(0〜9)のいずれか1文字に一致することを意味します。サンプルコード以下のJavaプログラムでは、ユーザーから入力されたテキストに対して、和
-
無料で学べるおすすめオンラインJavaチュートリアル厳選ガイド
本記事では、Javaプログラミング言語を短期間で習得できる無料のオンラインチュートリアルを厳選してご紹介します。Google検索の上位結果、コンテンツの質、役立つリソースの充実度、対象読者、学習曲線、アクセスのしやすさなどを総合的に評価して選定しました。順不同で、それぞれのJava学習リソースについて詳しく解説していきます。JavaBeginnersTutorial.comその名の通り、初心者に最適なチュートリアルサイトです。コンテンツは大きく3つのセクションに分かれています。第1セクションでは基本概念を解説し、第2セクションは「例題で学ぶ」形式で、Core Javaの各モジュールごとに実行可
-
JavaのArrayListを使って文字列の全順列を出力する方法
この記事では、長さnの文字列が与えられたときに、その文字列のすべての順列(並べ替え)を出力する方法を解説します。ポイントは、順列の結果をArrayListを使って管理・出力する点です。問題の概要具体例を見てみましょう。入力: 文字列 = XYZ出力: XYZ, XZY, YXZ, YZX, ZXY, ZYXこのように、入力された文字列の文字をすべて組み合わせた順列を、重複なく出力することが求められます。解決アプローチこの問題は再帰関数を使って解くのが効果的です。基本的な考え方は以下の通りです。文字列の先頭の1文字を取り出す。残りの部分文字列に対して再帰的に順列を生成する。返された順列リストの各
-
XDM –ダウンロード速度を最大500%に高めるLinux用ダウンロードマネージャーの導入ガイド
XDM(Xtreme Download Manager、通称xdman)は、Java言語で開発されたLinux向けの高性能ダウンロードマネージャーです。ダウンロード速度を最大500%まで高速化できるほか、Windowsで定番のIDM(Internet Download Manager)に代わる選択肢として注目されています。Firefox、Chrome、Operaなど、主要なWebブラウザとの連携にも対応しており、ブラウザから直接ダウンロードを管理できるのが魅力です。 事前準備:Java環境の確認 XDMはJavaで動作するため、インストール前にシステムにJavaが導入されているかを確認しまし
-
UbuntuにApache Mavenをインストールする方法を徹底解説
Apache Mavenとは?Apache Mavenは、ソフトウェアプロジェクトの管理と理解を支援する強力なツールです。プロジェクトオブジェクトモデル(POM)という概念に基づいており、中央管理された情報からプロジェクトのビルド、レポート作成、ドキュメント生成までを一元的に管理できます。Java開発において定番のビルドツールとして広く利用されています。この記事では、Ubuntu環境にApache Mavenをインストールする手順をわかりやすく解説します。前提条件:Javaのインストール確認MavenはJavaベースのツールであるため、事前にJavaがインストールされている必要があります。まず
-
Java入門:Collection.stream().forEach()とCollection.forEach()の違いを徹底解説
Javaのコレクションを反復処理する方法として、Collection.stream().forEach()とCollection.forEach()の2つがよく使われます。一見似ているこの2つのメソッドですが、内部の仕組みや動作には重要な違いがあります。Collection.forEach() の特徴Collection.forEach() は、コレクション自身が持つイテレータを使用して反復処理を行います。多くのコレクションでは、反復処理中の構造的な変更(要素の追加・削除)は許可されていません。反復中に要素を追加または削除すると、ConcurrentModificationException(
-
JavaのEnumMapとHashMapの違いを徹底比較!特徴・性能・使い分けのポイント
はじめにJavaには複数のMap実装クラスが用意されていますが、その中でもEnumMapとHashMapはよく比較される代表的な存在です。本記事では、両者の特徴や内部実装の違い、パフォーマンスの差などを表とサンプルコードを使ってわかりやすく解説します。EnumMapとはEnumMapはJDK5で導入された、enum型をキーとして使用するために特化したMapインターフェースの実装です。主な特徴は以下の通りです。すべてのキーは同一のenum型である必要がありますnullキーは許可されておらず、nullを渡すとNullPointerExceptionがスローされます公式のJavaドキュメントには次の
-
Javaの「Collection」と「Collections」の違いを徹底解説!初心者にもわかる使い分け
はじめに:JavaコレクションフレームワークとはJavaのコレクションフレームワークは、複数のオブジェクトをまとめて管理・操作するための仕組みです。このフレームワークには、ラッパークラスやユーティリティクラス、Vector や Hashtable のようなレガシー実装用のクラス、そして各種コレクションインターフェースなどが含まれています。ここで多くの初学者が混乱するのが、「Collection」と「Collections」という似た名前の存在です。この2つは全く別の役割を持つため、本記事でその違いを明確にしていきます。Collectionとは?Collection は、Javaコレクションフレ