Java 正则表达式中的量词类型
javaobject oriented programmingprogramming更新于 2025/8/10 0:44:17
如果要在构造正则表达式时指定出现次数,则可以使用量词。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("输入输入文本: ");
String input = sc.nextLine();
String regex = "[0-9]+";
//创建一个 Pattern 对象
Pattern pattern = Pattern.compile(regex);
//匹配字符串中的编译模式
Matcher matcher = pattern.matcher(input);
System.out.println(""Matched text: );
while (matcher.find()) {
System.out.println(matcher.group());
}
}
}
输出
输入输入文本: 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("输入输入文本: ");
String input = sc.nextLine();
String regex = "[0-9]+?";
//创建一个 Pattern 对象
Pattern pattern = Pattern.compile(regex);
//匹配字符串中的编译模式
Matcher matcher = pattern.matcher(input);
while (matcher.find()) {
System.out.println(matcher.group());
}
}
}
输出
输入输入文本: 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("输入输入文本: ");
String input = sc.nextLine();
String regex = "[0-9]++";
//创建一个 Pattern 对象
Pattern pattern = Pattern.compile(regex);
//匹配字符串中的编译模式
Matcher matcher = pattern.matcher(input);
while (matcher.find()) {
System.out.print(matcher.group());
System.out.println();
}
}
}
输出
输入输入文本: 45678 45678
相关文章
有用资源
java 参考教程 - 该教程包含有关 java 的更多信息:https://www.cainiaomax.com/java/

