Java正規表現の数量詞のタイプ
正規表現の作成中に出現回数を指定する場合は、数量詞を使用できます。 Javaは、貪欲な数量詞、嫌がる数量詞、所有格の数量詞の3種類の数量詞をサポートしています。
貪欲な数量詞- 貪欲な数量詞はデフォルトの数量詞です。貪欲な数量詞は、入力文字列から可能な限り一致します(可能な限り最長の一致)。一致が発生しなかった場合は、最後の文字を残して再度一致します。
例
import java.util.Scanner; import java.util.regex.Matcher; import java.util.regex.Pattern; public class Test { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("Enter input text: "); String input = sc.nextLine(); String regex = "[0-9]+"; //Creating a pattern object Pattern pattern = Pattern.compile(regex); //Matching the compiled pattern in the String Matcher matcher = pattern.matcher(input); System.out.println(""Matched text: ); while (matcher.find()) { System.out.println(matcher.group()); } } }
出力
Enter input text: Matched text: 45545
気が進まない数量詞- 非欲張り/不本意な数量詞は可能な限り一致しません。最初に非欲張り数量詞は最初の文字と一致します。一致が発生しなかった場合、入力文字列から別の文字を追加して一致を試みます。 「?」を配置すると貪欲な数量詞の後、それは気が進まないか、貪欲でない数量詞になります。
例
import java.util.Scanner; import java.util.regex.Matcher; import java.util.regex.Pattern; public class Test { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("Enter input text: "); String input = sc.nextLine(); String regex = "[0-9]+?"; //Creating a pattern object Pattern pattern = Pattern.compile(regex); //Matching the compiled pattern in the String Matcher matcher = pattern.matcher(input); while (matcher.find()) { System.out.println(matcher.group()); } } }
出力
Enter input text: 12345678 1 2 3 4 5 6 7 8
所有格の数量詞- 所有格の数量詞は貪欲な数量詞に似ていますが、唯一の違いは、最初にできるだけ多くの文字を一致させようとし、貪欲な数量詞とは異なり一致が発生しなかった場合、バックトラックしないことです。
貪欲な数量詞の後に「+」を付けると、所有格の数量詞になります。所有格の数量詞のリストは次のとおりです。
例
import java.util.Scanner; import java.util.regex.Matcher; import java.util.regex.Pattern; public class Test { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("Enter input text: "); String input = sc.nextLine(); String regex = "[0-9]++"; //Creating a pattern object Pattern pattern = Pattern.compile(regex); //Matching the compiled pattern in the String Matcher matcher = pattern.matcher(input); while (matcher.find()) { System.out.print(matcher.group()); System.out.println(); } } }
出力
Enter input text: 45678 45678
-
Java正規表現を使用して単語の境界を一致させる方法は?
メタ文字「\\b」を使用して単語の境界を一致させることができます。 例1 import java.util.Scanner; import java.util.regex.Matcher; import java.util.regex.Pattern; public class Example { public static void main(String args[]) { //Reading String from user System.out.println("En
-
Javaで正規表現を使用して文字列からHTMLタグを抽出するにはどうすればよいですか?
javaのjava.util.regexパッケージは、文字シーケンスの特定のパターンを見つけるためのさまざまなクラスを提供します。 パターン このパッケージのクラスは、正規表現のコンパイル済み表現です。正規表現を文字列と照合するために、このクラスは2つのメソッド、つまり-を提供します。 compile() −このメソッドは、正規表現を表す文字列を受け入れ、Patternクラスのオブジェクトを返します。 matcher() −このメソッドは文字列値を受け入れ、指定された文字列を現在のパターンオブジェクトによって表されるパターンに一致させるマッチャーオブジェクトを作成します。