English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Java RegExを使用してどんな文字をマッチングする方法は?

文字列「.」はJavaの正規表現で任意の文字(単一)を一致させます。それは文字、数字またはどんな特殊文字でもできます。

例1

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
   public static void main(String args[]) {
      //ユーザーから文字列を読み取ります
      System.out.println("文字列を入力してください");
      Scanner sc = new Scanner(System.in);
      String input = sc.nextLine();
      //正規表現はどんな文字でも一致させます
      String regex = ".";
      //正規表現をコンパイルします
      Pattern pattern = Pattern.compile(regex);
      //検索マッチャーオブジェクト
      Matcher matcher = pattern.matcher(input);
      int count = 0;
      while(matcher.find()) {
         count ++;
      }
      System.out.println("与えられた文字列が含んでいます"+count+"文字を一致させます.");
   }
}

出力結果

文字列を入力してください
hello how are you welcome to w3codebox
与えられた文字列が含んでいます 42 文字を一致させます。

以下の正規表現を使用してaとbの間の任意の3個文字-

a…b

同様に、表現*”とn文字に一致。

例2

次のJavaプログラムはユーザーから読み込みます5指定の文字列を入力し、bで始まり、aで終わり、その間に任意の文字が含まれる文字列を受け入れる。

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexExample {
   public static void main( String args[] ) {
      String regex = "^b.*a$";
      Scanner sc = new Scanner(System.in);
      System.out.println("Enter 5 input strings: ");
      String input[] = new String[5];
      for (int i=0; i<5; i++) {
         input[i] = sc.nextLine();
      }
      //パターンオブジェクトを作成
      Pattern p = Pattern.compile(regex);
      for(int i=0; i<5;i++) {
         //マッチャーオブジェクトを作成
         Matcher m = p.matcher(input[i]);
         if(m.find()) {
            System.out.println(input[i]+": accepted");
         } else {
            System.out.println(input[i]+": not accepted");
         }
      }
   }
}

出力結果

Enter 5 input strings:
barbara
boolean
baroda
ram
raju
barbara: accepted
boolean: not accepted
baroda: accepted
ram: not accepted
raju: not accepted