原文网址: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