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