Java正则表达式系列--从字符串中提取字符串或数字

原文网址:Java正则表达式系列--从字符串中提取字符串或数字_IT利刃出鞘的博客-CSDN博客

简介

本文用示例介绍Java如何使用正则表达式从字符串中提取想要的内容(字符串或者数字等)。

例1:提取一次不同内容

需求

从字符串中找到以aa开始的单词并且找到找到后边的数。

代码

package com.example.a;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Demo {
    public static void main(String[] args) {
        String line = "This order was aabbcc placed for QT3000! OK?";

        String regex = "(\\D*)(\\s+)(aa\\S+)(\\D*)(\\d+)(.*)";

        // 创建 Pattern 对象
        Pattern pattern = Pattern.compile(regex);

        // 现在创建 matcher 对象
        Matcher m = pattern.matcher(line);
        if (m.find()) {
            System.out.println("group0: " + m.group(0));
            System.out.println("group1: " + m.group(1));
            System.out.println("group2: " + m.group(2));
            System.out.println("group3: " + m.group(3));
            System.out.println("group3: " + m.group(4));
            System.out.println("group3: " + m.group(5));
            System.out.println("group3: " + m.group(6));
        }
    }
}

结果

group0: This order was aabbcc placed for QT3000! OK?
group1: This order was
group2:  
group3: aabbcc
group3:  placed for QT
group3: 3000
group3: ! OK?

group表示的是对应的数据分组,正则表达式的每个括号算一个组。

group0对应的是原数据;group2处是一个空格。 

例2:提取多次相同内容

需求

公司的员工号是LM加数字,找出字符串中的员工号。

代码

package com.example.a;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Demo {
    public static void main(String[] args) {
        Pattern pattern = Pattern.compile("(LM\\d+)");
        String str = "张三[LM89652] 李四[LM12365] 王五[LM56856]";
        Matcher matcher = pattern.matcher(str);
        while (matcher.find()) {
            System.out.println(matcher.group(1));
        }
    }
}

结果

LM89652
LM12365
LM56856

Matcher详解

猜你喜欢

转载自blog.csdn.net/feiying0canglang/article/details/128071693
今日推荐