-
Java正規表現のPOSIX文字クラス \p{ASCII} の使い方を解説
\p{ASCII}は、Java正規表現で利用できるPOSIX文字クラスの一つです。このクラスはASCII文字(\x00~\x7F)にマッチします。ASCII文字とは、コードポイント0~127に割り当てられた半角の英数字・記号・空白・制御文字などのことです。そのため、ひらがな・カタカナ・漢字といった全角文字や、éのようなアクセント付きラテン文字はマッチしません。主なPOSIX文字クラス\p{ASCII}とあわせて覚えておくと便利な、主なPOSIX文字クラスは以下のとおりです。\p{Alpha} … 英字(A~Z、a~z)\p{Digit} … 数字(0~9)\p{Alnum} … 英数字\p{U
-
Java正規表現のPOSIX文字クラス \p{Alpha} の使い方を解説
Javaの正規表現で使用できるPOSIX文字クラス \p{Alpha} は、英字(アルファベット)に一致する文字クラスです。大文字・小文字のどちらにもマッチするため、英語の文字列を判定したい場合に便利です。 \p{Alpha} の基本仕様 \p{Alpha} は、以下のいずれか1文字に一致します。 大文字のアルファベット(A〜Z) 小文字のアルファベット(a〜z) なお、数字や記号、空白などは一致対象外となります。似たクラスとして小文字のみに一致する \p{Lower}、大文字のみに一致する \p{Upper} もあります。 例1:英字だけで構成された文字列の判定 次の例では、正規表現 ^
-
【Java正規表現】POSIX文字クラス \p{Digit} の使い方を徹底解説
POSIX文字クラス \p{Digit} とはJavaの正規表現におけるPOSIX文字クラス \p{Digit} は、10進数の数字「0」から「9」にマッチするパターンです。文字列の中から数字だけを抽出したり、入力値が数字のみで構成されているかどうかを判定したりする際に便利です。なお、\p{Digit} は文字クラス [0-9] や \d とほぼ同じ働きをしますが、POSIX形式で記述することでコードの意図が明確になり、可読性が向上するというメリットがあります。例1:文字列に含まれる数字の個数を数える次のサンプルでは、ユーザーから入力された文字列に対して \p{Digit} を適用し、含まれる
-
Java正規表現のPOSIX文字クラス \p{Alnum} の使い方
\p{Alnum}とはJavaの正規表現におけるPOSIX文字クラス \p{Alnum} は、英数字(アルファベットと数字)に一致するパターンです。文字列の中から英字や数字だけを抽出したり、入力値が英数字のみで構成されているかを検証したりする際に便利です。なお、\p{Alnum} を使用する場合は、角括弧 [\p{Alnum}] のように文字クラスとして記述するか、単体で使用します。半角英字(a〜z、A〜Z)と半角数字(0〜9)が一致対象となります。例1:文字列中の英数字の数をカウントする次の例では、ユーザーから入力された文字列の中に、英数字がいくつ含まれているかをカウントします。import
-
Java正規表現のPOSIX文字クラス \p{Punct} の使い方を解説
POSIX文字クラス \p{Punct} は、句読点(記号)にマッチする文字クラスです。具体的には、以下のASCII記号が対象となります。!#$%&()*+,-./:;<=>?@[\]^_`{|}~この記事では、\p{Punct} を使った実際のJavaコード例を2つ紹介します。文字列中の記号の個数を数える方法と、記号のみで構成された文字列を抽出する方法です。例1:文字列内の記号の個数を数える次のプログラムは、ユーザーから入力された文字列に対して正規表現 [\p{Punct}] を適用し、含まれる記号の総数を出力します。import java.util.Scanner; impor
-
【Java】正規表現のPOSIX文字クラス\p{Graph}で可視文字を判定する方法
POSIX文字クラス \p{Graph} とは Javaの正規表現で利用できる\p{Graph}は、POSIX文字クラスの一つです。英字・数字・句読点・記号など、半角スペースを除くすべての可視文字にマッチします。ただし、デフォルトではASCII文字(0x21〜0x7E)が対象となるため、アクセント付き文字などの非ASCII文字にはマッチしない点に注意してください。 例1:入力文字列から可視文字を数える 次の例では、ユーザーが入力した文字列に対して正規表現[\p{Graph}]を適用し、マッチした文字(可視文字)の個数をカウントしています。 import java.util.Scanner; i
-
【Java】正規表現のPOSIX文字クラス \p{Print}で印刷可能文字を判定する方法
POSIX文字クラス \p{Print} は、印刷可能なすべての文字(半角スペースから「~」までのASCII文字)にマッチします。このクラスを活用すると、文字列に含まれる印刷可能な文字を簡単に判定・抽出できます。 例1:印刷可能な文字の数を数える 次の例では、ユーザーが入力した文字列の中から印刷可能な文字を数えて表示します。 import java.util.Scanner; import java.util.regex.Matcher; import java.util.regex.Pattern; public class PrintableCharacters { public
-
Java正規表現の3種類の数量詞を徹底解説!貪欲・最短・強欲マッチの違い
正規表現で文字の出現回数を指定したい場合に使うのが「数量詞」です。Javaでは、数量詞は大きく分けて貪欲数量詞、最短数量詞、強欲数量詞という3種類がサポートされています。それぞれの動作の違いを理解しておくと、意図した通りのパターンマッチングができるようになります。1. 貪欲数量詞貪欲数量詞はデフォルトの数量詞で、「+」や「*」などをそのまま書いたものがこれに該当します。入力文字列からできるだけ多くの文字をマッチさせようとし(最長一致)、もしマッチに失敗した場合は末尾の1文字を手放して再びマッチを試みます。この「戻って再試行する」動作をバックトラックと呼びます。サンプルコードimport jav
-
Java正規表現のPOSIX文字クラス\p{XDigit}とは?16進数文字のマッチング方法を実例で解説
POSIX文字クラス \p{XDigit} は、16進数(ヘキサデシマル)で使用される文字、つまり [0-9a-fA-F] に該当する文字にマッチする正規表現パターンです。数字の0〜9に加え、英字のa〜fおよびA〜Fが対象となります。例1:文字列中の16進数文字をカウントする以下の例では、ユーザーから入力された文字列の中に、16進数として使える文字がいくつ含まれているかを数えています。import java.util.Scanner; import java.util.regex.Matcher; import java.util.regex.Pattern; public class Sp
-
Java正規表現のPOSIX文字クラス\p{Space}とは?空白文字へのマッチ方法を実例付きで解説
POSIX文字クラス\p{Space}とは Javaの正規表現におけるPOSIX文字クラス\p{Space}は、空白文字全般にマッチする便利な文字クラスです。このクラスがマッチ対象とするのは、次の6種類の文字です。 半角スペース(U+0020) \t … 水平タブ(U+0009) \n … 改行(ラインフィード/U+000A) \x0B … 垂直タブ(U+000B) \f … フォームフィード(U+000C) \r … キャリッジリターン(U+000D) この文字クラスを活用すると、「文字列内の空白の数を数える」「空白を含む行だけを抽出する」といった処理を、個別のエスケープシーケンスを列
-
【Java正規表現】文字クラス\p{javaLowerCase}で小文字を判定・抽出する方法
文字クラス \p{javaLowerCase} は、小文字にマッチするための文字クラスです。このクラスは、java.lang.Character クラスの isLowerCase() メソッドに引数として渡したときに true を返す文字と一致します。つまり、「a」〜「z」だけでなく、Unicode 上で小文字とみなされる他言語の文字にも対応しています。 例1:入力文字列に含まれる小文字の数をカウントする 次のサンプルプログラムでは、ユーザーが入力した文字列に含まれる小文字の個数を数えて表示します。正規表現 [\p{javaLowerCase}] を Pattern.compile() メソ
-
Javaの従来コレクションと並行コレクション(Concurrent Collections)の違いを徹底解説
Javaにおいて、コレクションフレームワークは最も重要な概念の一つです。コレクションがあることで、Javaはあらゆる種類のデータを効率的かつ柔軟に扱える強力な言語となっており、データの追加・取得・更新・削除(CRUD操作)も簡単に行えます。 しかし、コレクションをマルチスレッド環境で使用すると、パフォーマンスが低下したり、予期しない問題が発生したりすることがあります。これは、従来のコレクションがマルチスレッド環境を十分に考慮して設計されていないためです。この課題を解決するために、Javaでは並行コレクション(Concurrent Collections)が導入されました。並行コレクションは、マ
-
JDK・JRE・JVMの違いとは?初心者にもわかる役割と関係性を徹底解説
Javaを学び始めると必ず出てくるのが「JDK」「JRE」「JVM」という3つの用語です。この3つは互いに密接に関連し合っており、独立した存在ではありません。そのため、単純な表形式だけで違いを説明するのは不十分ですが、本記事ではそれぞれの役割を順に解説し、最後に比較表で整理します。 JVM(Java Virtual Machine)とは JVMは「Java Virtual Machine(Java仮想マシン)」の略称です。Javaバイトコードを実行するためのランタイム環境を提供する仕様であり、抽象的な概念として定義されています。実装アルゴリズムの選択は各ベンダーに委ねられており、Sun Mic
-
HashMapとConcurrentHashMapの違いを徹底解説!スレッドセーフ性からパフォーマンスまで
JavaコレクションフレームワークとMapの役割Javaにおいて、コレクションフレームワークはデータを保持するための最も重要なデータ構造の一つです。Map、Set、Listなど複数の実装が提供されており、これらは効率的なデータ保存を可能にするだけでなく、マルチスレッド環境でのデータ操作にも対応できるよう設計されています。数ある実装の中でもHashMapは、データを「キー(Key)」と「値(Value)」のペアで格納する代表的なコレクションです。一方、マルチスレッド環境向けのコレクションとして用意されているのがConcurrentHashMapで、HashMapの特性を受け継ぎつつ、並行処理下で
-
Javaのthisとsuperの違いを徹底解説!比較表とサンプルコードで学ぶ正しい使い分け
Javaには、現在のクラスのインスタンスを表すthisと、親クラス(スーパークラス)を表すsuperという2つの特別なキーワードが用意されています。どちらもインスタンスに紐づくキーワードである点では共通していますが、その役割や利用できる場面には大きな違いがあります。本記事では、比較表と実際に動作するサンプルコードを通して、両者の違いをわかりやすく解説します。 thisとsuperの主な違い No.比較項目thissuper 1表す対象現在のクラス(自分自身)のインスタンスへの参照を表します。親クラス(スーパークラス)側のインスタンス部分への参照を表します。 2コンストラクタとの関係
-
Java正規表現の文字クラス\p{javaUpperCase}とは?大文字マッチングの使い方を解説
Javaの正規表現における文字クラス\p{javaUpperCase}は、大文字(アッパーケース)にマッチするための文字クラスです。このクラスは、java.lang.CharacterクラスのisUpperCase()メソッドに引数として渡したときにtrueを返すすべての文字に一致します。ASCIIのA〜Zだけでなく、Unicodeで定義された各言語の大文字にも対応しているため、国際化を意識したテキスト処理でも安心して利用できます。ここでは、実際のサンプルコードを通じて具体的な使い方を確認していきましょう。例1:文字列に含まれる大文字の数を数える次の例では、ユーザーが入力した文字列に対して正規
-
【Java】正規表現の文字クラス \p{javaWhitespace} とは?空白文字にマッチさせる方法
Javaの正規表現における文字クラス \p{javaWhitespace} は、空白文字(ホワイトスペース)にマッチする特殊なクラスです。このクラスは、対象の文字が java.lang.Character クラスの isWhitespace() メソッドに引数として渡されたときに true を返すかどうかを基準に、マッチの可否を判定します。つまり、半角スペース・タブ・改行コードなど、Javaが「空白」とみなすすべての文字に一致するパターンとして利用できます。例1:文字列内の空白文字を数える次のサンプルでは、ユーザーが入力した文字列に含まれる空白文字の個数を、正規表現を使ってカウントします。im
-
【Java正規表現】文字クラス \p{javaMirrored} でミラーリング文字(鏡像文字)にマッチさせる方法
文字クラス \p{javaMirrored} は、java.lang.Character クラスの isMirrored() メソッドに引数として渡したときに true を返す文字、いわゆる「ミラーリング文字(鏡像文字)」にマッチします。 ミラーリング文字とは、右から左へ記述する言語(アラビア語やヘブライ語など)との混在テキストを表示する際に、字形が左右反転されて描画される文字のことです。代表的な例としては、丸括弧 ( )、角括弧 [ ]、波括弧 { }、山括弧 < > といった対称的な記号が挙げられます。 例1:文字列内のミラーリング文字を数える import java.uti
-
JavaのMatchResultインターフェースstart()メソッドの使い方をサンプルコードで解説
java.util.regex.MatchResult インターフェースは、正規表現によるマッチングの結果を取得するためのメソッドを提供します。 このインターフェースのオブジェクトは、Matcher クラスの toMatchResult() メソッドを使って取得できます。このメソッドは、現在のマッチャーのマッチ状態を表す MatchResult オブジェクトを返します。 そして、このインターフェースが持つ start() メソッドは、現在のマッチが開始された位置(開始インデックス) を int 型の値として返します。 start()メソッドの基本的な動作 正規表現パターンが入力文字列内でマッチ
-
【Java】MatchResultインターフェースのstart(int group)メソッドをサンプル付きで解説
java.util.regex.MatchResultインターフェースは、正規表現によるマッチ処理の結果を取得するためのメソッド群を提供します。 このインターフェースのオブジェクトは、MatcherクラスのtoMatchResult()メソッドを使って取得できます。このメソッドは、現在のマッチャーが保持しているマッチ状態を表すMatchResultオブジェクトを返します。 start(int group)メソッドは、キャプチャリンググループの番号を表す整数を引数として受け取り、直前のマッチ操作において指定されたグループがマッチした部分文字列の先頭インデックス(オフセット)を返します。 サンプ