在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));
-
- }
- }
- }
【运行结果】