一. 什么是正则表达式?
正则表达式是一种用来描述、匹配和操作字符串的强大工具。它可以用于验证输入的字符串、提取特定格式的字符串、替换字符串中的特定部分等操作。
String 类里也提供了如下几个特殊的方法。
//判断该字符串是否匹配指定的正则表达式。
boolean matches(String regex)
//将该字符串中所有匹配 regex 的子串替换成replacement。
String replaceAll(String regex, String replacement)
//将该字符串中第一个匹配 regex 的子串替换成 replacement。
String replaceFirst(String regex, String replacement)
//以 regex 作为分隔符,把该字符串分割成多个子串。
String[] split(String regex)
二. 测试案例
2.1 提取数字(包含小数)
package com.example.demo.aaa;
import java.util.regex.*;
public class RegexDemo {
public static void main(String[] args) {
String input = "这是一个包含数字的字符串,比如123和4.56等等";
String pattern = "\\d+(\\.\\d+)?";
Pattern p = Pattern.compile(pattern);
Matcher m = p.matcher(input);
while (m.find()) {
System.err.println("match number:" + m.group());
}
}
}
在上面的代码中,使用了正则表达式 \\d+(\\.\\d+)?
来提取字符串中的数字部分。该正则表达式的含义如下:
\\d+
匹配一个或多个数字;(\\.\\d+)?
匹配小数点和小数部分,其中?
表示小数部分可选。
输出:
match number:123
match number:4.56
2.2 提取百分号的数(包含小数)
String input = "这是一个包含百分数的字符串,比如12.34%和56%和0.007%等等。";
String regex = "(\\d+(\\.\\d+)?%)";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(input);
while (matcher.find()) {
String percentage = matcher.group();
System.err.println("Percentage: " + percentage);
}
在上面的代码中,使用了正则表达式 (\\d+(\\.\\d+)?%)
来提取字符串中的百分数部分。该正则表达式的含义如下:
\\d+
匹配一个或多个数字;(\\.\\d+)?
匹配小数点和小数部分,其中?
表示小数部分可选;%
表示百分号。
使用 Pattern
类的 compile
方法将正则表达式编译成一个模式,然后使用 Matcher
类的 matcher
方法对输入字符串进行匹配。如果输入字符串中存在匹配的百分数,可以使用 group
方法获取匹配的字符串。
运行上述代码,将输出:
Percentage: 12.34%
Percentage: 56%
Percentage: 0.007%
三. 代码解析:
首先定义了一个输入字符串input和一个正则表达式模式pattern。
使用Pattern.compile()方法将正则表达式编译成一个Pattern对象。
使用p.matcher(input)方法创建一个Matcher对象,用于进行匹配。
使用m.find()方法循环查找输入字符串中与正则表达式匹配的部分。
使用m.group()方法获取匹配到的部分。
四. 总结
正则表达式写对,理论上是可以跑出指定的数据的.