Java - 正規表現


■ページ目次

Top

■正規表現

Top
■正規表現検索の使用方法
  • Top
    ■例題
    1. 文字列"Hello Java World"中に、文字列"Java"があるか否かを確認するアプリケーション"Pattern01.java"を作成してください。
      1. import java.util.regex.*;
      2. public class Pattern01 {
      3. public static void main(String args[]) {
      4. Pattern p = Pattern.compile(".*Java.*");
      5. Matcher m = p.matcher("Hello Java World");
      6. System.out.println(m.matches());
      7. }
      8. }

      □ 実行結果

      $ java Pattern01
      true
      
    2. 文字列"Hello Java World"を、文字列"Hello", "Java", "World"で区切り、その区切ったパターンをすべて表示するアプリケーション"Pattern11.java"を作成してください。なお、パターンはコマンドラインの第1引数で、入力シーケンスは第2引数で指定してください。
      1. import java.util.regex.*;
      2. public class Pattern11 {
      3. public static void main(String args[]) {
      4. Pattern p = Pattern.compile(args[0]);
      5. Matcher m = p.matcher(args[1]);
      6. while (m.find()){
      7. System.out.println(m.group());
      8. }
      9. }
      10. }

      □ 実行結果

      $ java Pattern11 "Hello|Java|World" "Hello Java World"
      Hello
      Java
      World
      
    3. 文字列"Hello Java World"を、空白文字列" "で区切り、その分割された文字列をすべて表示するアプリケーション"Pattern21.java"を作成してください。なお、パターンはコマンドラインの第1引数で、入力シーケンスは第2引数で指定してください。
      1. import java.util.regex.*;
      2. public class Pattern21 {
      3. public static void main(String args[]) {
      4. Pattern p = Pattern.compile(args[0]);
      5. String[] s = p.split(args[1]);
      6. for (int i = 0; i < s.length; i++) {
      7. System.out.println(s[i]);
      8. }
      9. }
      10. }

      □ 実行結果

      $ java Pattern21 " " "Hello Java World"
      Hello
      Java
      World
      
    4. 文字列"Hello Java Java World"中の文字列"Java"をすべて"Servlet"に置き換えるアプリケーション"Pattern31.java"を作成してください。なお、パターンはコマンドラインの第1引数で、入力シーケンスは第2引数で、置換文字列は第3引数で指定してください。
      1. import java.util.regex.*;
      2. public class Pattern31 {
      3. public static void main(String args[]) {
      4. Pattern p = Pattern.compile(args[0]);
      5. Matcher m = p.matcher(args[1]);
      6. System.out.println(m.replaceAll(args[2]));
      7. }
      8. }

      □ 実行結果

      $ java Pattern31 "Java" "Hello Java Java World" "Servlet"
      Hello Servlet Servlet World
      
    Top
    ■java.util.regex.Pattern クラス
    Top
    ■java.util.regex.Matcher クラス
    Top
    ■実習
    1. "Pattern01.java"を、つぎのように改良してください。("Pattern02.java")。
      1. import java.util.regex.*;
      2. public class Pattern02 {
      3. public static void main(String args[]) {
      4. Pattern p = Pattern.compile(args[0]);
      5. Matcher m = p.matcher(args[1]);
      6. System.out.println(m.matches());
      7. }
      8. }

      □ 実行結果

      $ java Pattern02 ".*World.*" "Hello Java World"
      true
      
    2. 以下のアプリケーションの入力シーケンスをすべて標準入力から入力するようにしてください。
      なお、つぎの2つのメソッドを備えたクラス(Sysin01.java)もあわせて作成してください。
      改良後 <-- 改良前
      Pattern03.java <-- Pattern02.java
      Pattern12.java <-- Pattern11.java
      Pattern22.java <-- Pattern21.java
      Pattern32.java <-- Pattern31.java

      □ 実行結果

      $ java Pattern03 ".*compile.*" < Pattern03.java
      true
      
      $ java Pattern03 ".*compile.*" < Pattern03.java
      true
      
      $ java Pattern12 "pattern|compile" < Pattern03.java
      compile
      
      $ java Pattern22 "compile" < Pattern03.java
      import java.util.regex.*;class Pattern03 {    public static void main(String arg
      s[]) {        Pattern p = Pattern.
      (args[0]);        Matcher m = p.matcher(Sysin01.readWithoutLineSeparator());
          System.out.println(m.matches());    }}
      
      $ java Pattern32 "Pattern" "PATTERN" < Pattern03.java
      import java.util.regex.*;class PATTERN03 {    public static void main(String arg
      s[]) {        PATTERN p = PATTERN.compile(args[0]);        Matcher m = p.matcher
      (Sysin01.readWithoutLineSeparator());        System.out.println(m.matches());
       }}
      
    Top

    inserted by FC2 system