Java
 Computer >> コンピューター >  >> プログラミング >> Java

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

正規表現におけるメタ文字「.」は、改行以外のあらゆる1文字に一致します。この性質を利用すると、入力された文字列に含まれるすべての文字を1文字ずつ取り出して出力することができます。

実装の手順

  • Patternクラスのcompile()メソッドを使って、正規表現をコンパイルします。
  • matcher()メソッドを使って、対象の文字列に対するMatcherオブジェクトを生成します。
  • find()メソッドで一致箇所を順番に検索し、一致が見つかるたびにgroup()メソッドでマッチした内容(=1文字)を取得して出力します。

サンプルコード

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegexExample {
    public static void main(String args[]) {
        // 任意の1文字に一致する正規表現
        String regex = ".";

        Scanner sc = new Scanner(System.in);
        System.out.println("文字列を入力してください:");
        String input = sc.nextLine();

        // Patternオブジェクトの生成
        Pattern p = Pattern.compile(regex);

        // Matcherオブジェクトの生成
        Matcher m = p.matcher(input);

        // 一致するすべての文字を出力
        while (m.find()) {
            System.out.println(m.group());
        }
    }
}

実行結果

文字列を入力してください:
This is a sample text
T
h
i
s
 
i
s
 
a
 
s
a
m
p
l
e
 
t
e
x
t

解説

このプログラムでは、パターン「.」が入力文字列の先頭から末尾まで順にスキャンされ、find()が呼ばれるたびに次の1文字と一致します。ループ内のm.group()は、その時点でマッチした文字を返すため、結果として文字列全体が1文字ずつ行ごとに出力されます。

なお、デフォルトの「.」は空白文字にも一致するため、上記の出力例ではスペースも空行として表示されます。空白を除外したい場合は、正規表現を「\S」(空白以外の文字)に変更するとよいでしょう。

  1. Pythonの正規表現で文字列内のすべての数値を抽出する方法

    テキストから数値だけを取り出す処理は、Pythonによるデータ分析において非常によくある要件です。Pythonの正規表現ライブラリ「re」モジュールを使えば、この処理を簡単に実現できます。正規表現ライブラリでは、数字にマッチするパターンを定義し、そのパターンに合致する部分を部分文字列として抽出できます。基本的な例以下の例では、reモジュールが提供するfindall()関数を使用しています。この関数には、抽出したいパターンと、抽出元となる文字列の2つの引数を渡します。なお、下記の例では整数部分のみが取得され、小数点や負の符号は含まれない点に注意してください。import re str = inp

  2. 【Python】正規表現で文字列の末尾にマッチさせる方法

    文字列の末尾にマッチさせるには Pythonのreモジュールを使うと、正規表現によって文字列の末尾にある特定のパターンを簡単に抽出できます。文字列の最後に一致させるには、正規表現のメタ文字である $ を使用します。 $ は「文字列の終わり」を表す特殊文字です。パターンの末尾にこの記号を付けることで、文字列の最後にある単語だけをマッチさせることができます。 以下のコードでは、文字列「cheer leaders at the football stadium」の末尾にある単語「stadium」をマッチさせています。 コード例 import re s = cheer leaders at the