前言
在Java编程中,有时我们需要从字符串中找出符合某种规则的字符串。这时候,我们可以使用正则表达式来进行模式匹配。正则表达式是一种强大的文本匹配工具,它可以用来匹配复杂的字符串模式。
正则表达式的基础
正则表达式是一种通过字符模式来匹配和查找字符串的工具。它由一些特殊字符和普通字符组成,可以用来定义搜索模式。
以下是一些常用的正则表达式元字符:
- . :匹配任意单个字符(除了换行符)。
- * :匹配前面的元素零次或多次。
- + :匹配前面的元素一次或多次。
- ? :匹配前面的元素零次或一次。
- [] :匹配方括号内的任意一个字符。
- () :分组,将括号内的内容作为一个整体进行匹配。
使用Java正则表达式的步骤
在Java中,使用正则表达式需要以下几个步骤:
1.创建一个正则表达式模式对象。
2.使用模式对象创建一个匹配器对象。
3.使用匹配器对象进行匹配操作。
示例代码
以下是两个示例代码,演示如何使用Java正则表达式来获得所有匹配值:
【代码案例1】
//提取文本中所有以订单开头的内容
public class RegexDemo1 {
public static void main(String[] args) {
String str = "我的订单KMJ0801,我的订单KMJ0802订单,订单KMJ0888,我的订单KMJ0808,3月28号购票的不是订单KMJ0803,订单编号KMJ0801。";
String regex = "订单.+?";
Pattern pattern = Pattern.compile(regex);
Matcher m = pattern.matcher(str);
int start = 0;
int end = 0;
while (m.find()) {
// System.out.println("-------------"+m.start());
end= m.start();
if (end == 0) {
continue;
}
if (start > 0) {
// System.out.println("============="+start);
System.out.println(str.substring(start, end));
}
start = end;
}
System.out.println(str.substring(start));
}
}
【运行结果】
【代码案例2】
//提取文本中依次出现的匹配内容,输出打印
public class RegexDemo2 {
public static void main(String[] args) {
String str = "订单KLS000681,徐丹丹(先生/女士)您已购买2024年05月02日G89次09车2A号,上海南11:10开,检票口:A1。请持购票证件进站乘车,谢谢。";
String regex = "^订单(.*),(.*)您已购买(.{1,4})年(.{1,2})月(.{1,2})日(.*次)(.*号),(.*)(([0-9]\\d:+)([0-9])+开),(.*)$";
Pattern pattern = Pattern.compile(regex);
Matcher m = pattern.matcher(str);
if (m.find()) {
System.out.println("订单编号:"+ m.group(1));
System.out.println("姓名:" + m.group(2));
System.out.println(m.group(3));
System.out.println(m.group(4));
System.out.println(m.group(5));
System.out.println(m.group(6));
System.out.println(m.group(7));
System.out.println(m.group(8));
}
}
}
【运行结果】