管理人Kのひとりごと

デジモノレビューやプログラミングや写真など

Javaで正規表現(パターンマッチした文字列を抽出)

Javaで正規表現を使って対象文字列から特定パターンに合致する文字列を抽出する。
ExcelVBA↓
www.k-hitorigoto.online

やりたいこと

下の文字列から「1868」のような数字4桁を抽出する

hoge@localhost:~/test_java_repo$ cat input.txt 
明治 1868/10/231912/7/29
大正 1912/7/30~1926/12/24
昭和 1926/12/25~1989/1/7
平成 1989/1/8~2019/4/30

ソースコード

hoge@localhost:~/test_java_repo$ java -version
openjdk version "11.0.4" 2019-07-16
OpenJDK Runtime Environment (build 11.0.4+11-post-Ubuntu-1ubuntu218.04.3)
OpenJDK 64-Bit Server VM (build 11.0.4+11-post-Ubuntu-1ubuntu218.04.3, mixed mode, sharing)

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

public class Main {
    public static void main(final String[] args) {
        if (args.length < 1) {
            System.out.println("引数を入力してください");
        }

        Pattern p = Pattern.compile("\\d\\d\\d\\d");

        // String#join()で引数を1つの文字列にしてパターンマッチさせる
        Matcher m = p.matcher(String.join(" ", args));

        while (m.find()) {
            System.out.println(m.group());
        }
    }
}

実行結果

hoge@localhost:~/test_java_repo$ javac Main.java 

hoge@localhost:~/test_java_repo$ cat input.txt | xargs java Main
1868
1912
1912
1926
1926
1989
1989
2019
2019