Java 正則表示式中的量詞型別
如果你想在構造正則表示式時指定出現次數,可以使用量詞。Java 支援三種類型的量詞:貪婪量詞、勉強量詞和獨佔量詞。
貪婪量詞 − 貪婪量詞是預設的量詞。一個貪婪量詞儘可能多地匹配輸入字串(最長的可能匹配),如果匹配未發生,它將離開最後一個字元,並再次匹配。
例如
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
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP