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」(空白以外の文字)に変更するとよいでしょう。
-
Pythonの正規表現で文字列内のすべての数値を抽出する方法
テキストから数値だけを取り出す処理は、Pythonによるデータ分析において非常によくある要件です。Pythonの正規表現ライブラリ「re」モジュールを使えば、この処理を簡単に実現できます。正規表現ライブラリでは、数字にマッチするパターンを定義し、そのパターンに合致する部分を部分文字列として抽出できます。基本的な例以下の例では、reモジュールが提供するfindall()関数を使用しています。この関数には、抽出したいパターンと、抽出元となる文字列の2つの引数を渡します。なお、下記の例では整数部分のみが取得され、小数点や負の符号は含まれない点に注意してください。import re str = inp
-
【Python】正規表現で文字列の末尾にマッチさせる方法
文字列の末尾にマッチさせるには Pythonのreモジュールを使うと、正規表現によって文字列の末尾にある特定のパターンを簡単に抽出できます。文字列の最後に一致させるには、正規表現のメタ文字である $ を使用します。 $ は「文字列の終わり」を表す特殊文字です。パターンの末尾にこの記号を付けることで、文字列の最後にある単語だけをマッチさせることができます。 以下のコードでは、文字列「cheer leaders at the football stadium」の末尾にある単語「stadium」をマッチさせています。 コード例 import re s = cheer leaders at the