top / index / prev / next / target / source

2017-01-17 diary: [Java] 正規表現 regex の少しだけ応用のメモ

いがぴょんの日記 日記形式でつづる いがぴょんコラム ウェブページです。

[Java] 正規表現 regex の少しだけ応用のメモ

Java 正規表現 regex の少しだけ応用のメモをします。

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

public class App {
  public static void main(final String[] args) {
    final Pattern pat = Pattern.compile("\\[.*?\\]");

    String currentString = "What is [your] name? My [name] is [taro].";
    for (;;) {
      final Matcher mat = pat.matcher(currentString);
      if (mat.find() == false) {
        break;
      }

      System.out.println("prev string:" + currentString.substring(0, mat.start()));

      final String word = mat.group();
      System.out.println("  found:" + word);

      currentString = currentString.substring(mat.end());
      System.out.println("  next string:'" + currentString + "'");
    }
  }
}

実行結果。

prev string:What is 
  found:[your]
  next string:' name? My [name] is [taro].'
prev string: name? My 
  found:[name]
  next string:' is [taro].'
prev string: is 
  found:[taro]
  next string:'.'

逐次処理をおこないたい場合に、なんどか regex マッチしながら文字列処理していく例です。

関連する日記

今日も寒い。でも昼過ぎからは暖かくなりました。

今日も寒い。でも昼過ぎからは暖かくなりました。

登場キーワード


この日記について