Javaで正規表現を使って対象文字列から特定パターンに合致する文字列を抽出する。
ExcelVBA↓
www.k-hitorigoto.online
やりたいこと
下の文字列から「1868」のような数字4桁を抽出する
hoge@localhost:~/test_java_repo$ cat input.txt 明治 1868/10/23~1912/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