Java

 Computer >> コンピューター >  >> プログラミング >> Java
  1. JavaでカスタムUnaryOperatorを実装する方法

    java.util.function.UnaryOperatorインターフェースは、ラムダ式の代入先として使用できる関数型インターフェースです。1つのオペランドに対する操作を表し、その結果は入力と同じ型になります。このインターフェースを実装することで、独自のカスタムUnaryOperatorを作成することが可能です。 また、Listインターフェースが提供するreplaceAll()メソッドは、UnaryOperatorオブジェクトを引数として受け取ります。このメソッドを呼び出すと、リスト内のすべての要素に対して指定された操作が適用され、既存の値が処理結果の値に置き換えられます。 以下の例では、

  2. 【Java】10文字以上・偶数長の16進数にマッチする正規表現の書き方

    以下は、長さが偶数で10文字以上となる16進数にマッチする正規表現です。 ^(?=.{10,255}$)(?:0x)?\p{XDigit}{2}(?:\p{XDigit}{2})*$ 正規表現を構成する各要素の意味は次のとおりです。 ^ − 文字列の先頭にマッチします。 (?=.{10,255}$) − 先読み(lookahead)により、文字列全体の長さが10〜255文字であることを確認します。 (?:0x)? − 先頭に付けられる接頭辞「0x」にマッチします。あってもなくても構いません。 \p{XDigit}{2} − 16進数の文字2つにマッチします。 (?:\p{XDigit}{2

  3. Javaで1つの入力に対して複数の正規表現パターンをチェックする方法

    Javaでユーザーの入力値を検証する際、「複数の正規表現パターンのいずれかに一致するかどうか」を確認したいケースはよくあります。例えば、電話番号として10桁の数字であるか、あるいは母音で始まる文字列であるかなど、複数の条件を同時に判定したい場合です。本記事では、Javaで複数の正規表現パターンをチェックする2つの代表的な方法を、サンプルコードと実行結果とともにわかりやすく解説します。方法1:「|」(OR)メタ文字を使うJavaの正規表現におけるメタ文字「|」を使うと、複数の正規表現を1つのパターンにまとめることができます。「|」は「または(OR)」を意味し、左右のどちらかのパターンに一致すれば

  4. 【Java】文字列に少なくとも1つの英数字が含まれているかを判定する正規表現プログラム

    使用する正規表現 次の正規表現は、少なくとも1つの英数字(a〜z、A〜Z、0〜9)を含む文字列にマッチします。 ^.*[a-zA-Z0-9]+.*$ それぞれの構成要素の意味は以下の通りです。 ^.*:文字列の先頭にマッチし、その後に0個以上の任意の文字が続くことを表します。 [a-zA-Z0-9]+:1個以上の英数字にマッチします。「少なくとも1つの英数字が含まれている」という条件は、この部分で実現されています。 .*$:0個以上の任意の文字が続き、文字列の末尾で終わることを表します。 例1:PatternクラスとMatcherクラスを使う方法 import java.util.Sca

  5. Java正規表現で数字と英字の間にスペースを挿入する方法

    正規表現では、パターンの一部を丸括弧 () で囲むことで「キャプチャグループ(マッチグループ)」を作成できます。たとえば、次の正規表現では、第1グループが数字に、第2グループが英字(アルファベット)にそれぞれマッチします。(\\d)([A-Za-z])これは、入力文字列の中から「数字の直後に英字が続く部分」にマッチすることを意味します。置換文字列において $1 は第1グループ、$2 は第2グループへの後方参照を表します。したがって、Stringクラスの replaceAll() メソッドを使ってこの正規表現を $1 $2 に置き換えると、数字の直後に単語が続くすべての箇所へ、自動的にスペースが

  6. JavaのPatternSyntaxExceptionクラスとは?正規表現の構文エラー処理方法を解説

    PatternSyntaxException クラスは、正規表現(regex)の文字列に構文エラーが含まれている場合にスローされる非検査例外(unchecked exception)です。この例外は java.util.regex パッケージに属しており、Pattern.compile() メソッドなどで不正な正規表現をコンパイルしようとした際に発生します。 このクラスには、エラーの詳細情報を取得するための主要なメソッドが用意されています。 getDescription() − エラーの説明(description)を返します。 getIndex() − エラーが発生した位置のインデックス

  7. 【Java】正規表現の\Eメタ文字とは?\Qと組み合わせたエスケープ方法を解説

    \Eメタ文字の基本的な役割正規表現におけるサブ表現(メタ文字)「\E」は、\Qによって開始された引用(クォート)を終了させる役割を持っています。つまり、\Qと\Eの間にメタ文字を挟むことで、正規表現内のメタ文字をエスケープ(特殊な意味の無効化)することができます。例えば、正規表現 [aeiou] は、母音(a・e・i・o・u)を含む文字列にマッチします。サンプルコード1:通常の正規表現の場合import java.util.Scanner; import java.util.regex.Matcher; import java.util.regex.Pattern; public class

  8. Javaの正規表現を使ってHTMLの太字タグ(<b>)の中身を抽出・照合する方法

    正規表現「\S」は、空白以外の1文字にマッチします。さらに、次のように「+」を組み合わせた正規表現を使うと、太字タグの間にある1文字以上の空白以外の文字列にマッチさせることができます。 (\S+) したがって、HTMLスクリプト内の太字フィールドを照合するには、以下の手順を実行します。 compile()メソッドを使って、上記の正規表現をコンパイルし、Patternオブジェクトを作成します。 作成したPatternオブジェクトに対してmatcher()メソッドを呼び出し、対象の文字列を検索するMatcherオブジェクトを取得します。 find()メソッドでマッチ箇所を順番に探しながら、gr

  9. 【Java】正規表現の貪欲な数量詞(Greedy Quantifier)とは?最長一致の仕組みを解説

    貪欲な数量詞(Greedy Quantifier)とは貪欲な数量詞は、Javaの正規表現においてデフォルトで使用される数量詞です。貪欲な数量詞は、入力文字列に対してできるだけ多くの文字にマッチしようとする(最長一致)という特徴を持っています。もしマッチが成立しなかった場合は、末尾の1文字を手放して再度マッチを試みます。この「少しでも多く取ろうとする」動作から「貪欲(greedy)」という名前が付いています。以下に、主な貪欲な数量詞の一覧を示します。数量詞説明re*0回以上の出現にマッチします。re?0回または1回の出現にマッチします。re+1回以上の出現にマッチします。re{n}ちょうどn回の

  10. JavaのCollections.replaceAll()メソッドとList.replaceAll()メソッドの違いを解説

    Collections.replaceAll()メソッドとは java.util.CollectionsクラスのreplaceAll()メソッドは、Listオブジェクトと、置換前の値(旧値)・置換後の値(新値)を表す2つの引数を受け取ります。このメソッドを呼び出すと、リスト内に存在する旧値がすべて新値に一括して置き換えられます。 使用例 import java.util.ArrayList; import java.util.Collections; import java.util.List; public class ReplaceAllExample {    pu

  11. JavaのMatchResultインターフェースgroupCount()メソッドの使い方と実行例

    java.util.regex.MatchResultインターフェースは、正規表現によるマッチ処理の結果を取得するための各種メソッドを提供しています。このインターフェースのオブジェクトは、MatcherクラスのtoMatchResult()メソッドを使用して取得できます。このメソッドは、現在のマッチャーが保持しているマッチ状態を表すMatchResultオブジェクトを返します。そして、このインターフェースが持つgroupCount()メソッドは、対象となる正規表現に含まれるキャプチャリンググループの数をカウントし、その値をint型として返します。groupCount()メソッドのポイント戻り値

  12. 未入力(空欄)にも対応したメールアドレス検証用のJava正規表現プログラム

    フォームの入力チェックなどでは、「メールアドレス欄が任意入力(空欄でもよい)」というケースによく遭遇します。そんなときに役立つのが、空欄の入力も有効として扱えるメールアドレス検証用の正規表現です。本記事では、未入力(空文字)の場合も許容しつつ、通常のメールアドレスの形式を正しく判定できる正規表現と、それをJavaで実装する2つのサンプルコードをわかりやすく解説します。使用する正規表現は次のとおりです。^([a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,6})?$正規表現の各要素の意味^:文字列の先頭にマッチすることを示します。[a-zA-Z0-9._%

  13. JavaのList.replaceAll()メソッドの使い方を解説!UnaryOperatorでリスト要素を一括置換する方法

    JavaのListインターフェースが提供するreplaceAll()メソッドは、UnaryOperator型のオブジェクトを受け取り、現在のリスト内のすべての要素に対して指定された処理を実行し、その結果で既存の値を置き換えるメソッドです。 replaceAll()メソッドの基本構文 void replaceAll(UnaryOperator<E> operator) UnaryOperatorは、同じ型の引数を1つ受け取り、同じ型の結果を返す関数型インターフェースです。つまり、リストの各要素に対して「入力と出力が同型」の変換処理を適用するのに適しています。 実装例 以下の例では、U

  14. 【Java入門】正規表現のPOSIX文字クラス \p{IsLatin} でラテン文字を判定・カウントする方法

    Java正規表現における文字クラス \p{IsLatin} は、Unicodeスクリプト「Latin(ラテン文字)」に分類される文字にマッチします。英語のアルファベット(A〜Z、a〜z)はもちろん、é や á、ó のようなアクセント記号付きの文字もラテン文字として扱われるのが特徴です。この記事では、\p{IsLatin} を使った具体的なサンプルコードを2つ紹介しながら、その使い方を解説します。\p{IsLatin} の基本的な動作\p{IsLatin} は、対象の1文字がラテン文字体系(Latin script)に属しているかどうかを判定するパターンです。日本語のひらがなや漢字、ギリシャ文字

  15. JavaのMatchResultインターフェースにおけるgroup(int group)メソッドの使い方【実例付き】

    java.util.regex.MatchResultインターフェースは、正規表現によるマッチ結果を取得するための各種メソッドを提供します。 このインターフェースのオブジェクトは、MatcherクラスのtoMatchResult()メソッドを使って取得できます。このメソッドは、現在のマッチャーのマッチ状態を表すMatchResultオブジェクトを返します。 このインターフェースが持つgroup(int group)メソッドは、対象となるグループ番号を整数値として受け取り、直前のマッチ処理において、指定されたグループに対応する入力シーケンス中のマッチ部分文字列をString型で返します。 サンプ

  16. Javaの正規表現ですべての空白と句読点で文字列を分割する方法

    Javaでは、正規表現 [!._,@?\s] を使うことで、文字列中のすべての句読点と空白文字に一致するパターンを作成できます。このパターンを split() メソッドに渡すと、記号やスペースをすべて区切り文字として扱い、文字列を単語ごとに分割できます。 正規表現パターンの内容 文字クラス [...] の中に列挙した文字のいずれか1つに一致します。このパターンの各要素は次のとおりです。 ! … 感嘆符 . … ピリオド _ … アンダースコア , … カンマ … シングルクォート @ … アットマーク ? … 疑問符 \s … スペースやタブなどのすべての空白文字 例1:一致した個所をカ

  17. 【Java】正規表現で行末(改行)を区切り文字として文字列を分割する方法

    Windows環境では「\r\n」(CR+LF)が行区切り文字(改行コード)として使われています。この行末にマッチする正規表現が「\r?\n」です。「?」は直前の文字が0回または1回出現することを意味するため、Windows形式の「\r\n」と、Unix/LinuxやmacOSで一般的な「\n」の両方の改行コードに対応できます。 Stringクラスのsplit()メソッドは、正規表現を表す文字列を引数として受け取り、そのパターンが一致した箇所で現在の文字列を分割し、トークン(部分文字列)の配列として返します。2つの一致箇所に挟まれた文字列が、1つのトークンとして扱われます。 したがって、行末

  18. Javaの正規表現を使って文字列のすべての文字を1文字ずつ出力する方法

    正規表現におけるメタ文字「.」は、改行以外のあらゆる1文字に一致します。この性質を利用すると、入力された文字列に含まれるすべての文字を1文字ずつ取り出して出力することができます。実装の手順Patternクラスのcompile()メソッドを使って、正規表現をコンパイルします。matcher()メソッドを使って、対象の文字列に対するMatcherオブジェクトを生成します。find()メソッドで一致箇所を順番に検索し、一致が見つかるたびにgroup()メソッドでマッチした内容(=1文字)を取得して出力します。サンプルコードimport java.util.Scanner; import java.u

  19. Javaの正規表現でメールアドレスを検証する方法を徹底解説

    メールアドレスに一致する正規表現とはJavaで入力された文字列が有効なメールアドレス形式かどうかを判定するには、java.util.regexパッケージのPatternクラスとMatcherクラスを使用します。まず、メールアドレスに一致する正規表現を見てみましょう。^[\\w!#$%&*+/=?`{|}~^-]+(?:\\.[\\w!#$%&*+/=?`{|}~^-]+)*@(?:[a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,6}$この正規表現は、メールアドレスの「ローカル部」(@より前)と「ドメイン部」(@以降)の両方を検証するものです。各部分の意味は以下の通りで

  20. Java正規表現のPOSIX文字クラス\p{InGreek}でギリシャ文字を扱う方法

    \p{InGreek}とはJava正規表現におけるPOSIX文字クラスの一つである \p{InGreek} は、Unicodeブロック「Greek」に属するギリシャ文字にマッチします。この文字クラスを利用することで、入力された文字列の中からギリシャ文字だけを抽出・カウントしたり、文字列にギリシャ文字が含まれているかどうかを判定したりすることができます。例1:ギリシャ文字の出現回数を数える次のプログラムでは、ユーザーから文字列を読み込み、正規表現 \p{InGreek} を使って、その中に含まれるギリシャ文字の数をカウントしています。import java.util.Scanner; impor

Total 1930 -コンピューター  FirstPage PreviousPage NextPage LastPage CurrentPage:48/97  20-コンピューター/Page Goto:1 42 43 44 45 46 47 48 49 50 51 52 53 54