Java 正则匹配连贯的数字
在我们的日常编程工作中,经常会遇到需要从字符串中提取数字的情况。这些数字可能是任意长度的整数或小数,并且可能会包含正负号。在 Java 中,我们可以使用正则表达式来匹配并提取这些连贯的数字。本文将介绍如何使用 Java 的正则表达式来实现这个功能,并提供相应的代码示例。
正则表达式的基本概念
在深入讨论之前,我们先来了解一下正则表达式的基本概念。正则表达式是一种用于匹配字符串的模式。它由一些特殊字符和普通字符组成,可以用来描述字符的特征、位置和数量。在 Java 中,我们使用 java.util.regex
包提供的类来操作正则表达式。
匹配连贯的数字
要匹配连贯的数字,我们可以使用正则表达式 \d+(\.\d+)?
。这个表达式由以下几个部分组成:
\d+
:匹配一个或多个数字字符。(\.\d+)?
:可选匹配,用于匹配小数部分。其中.
是一个特殊字符,需要使用\.
进行转义。
下面是一个使用该正则表达式的示例代码:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class NumberMatcher {
public static void main(String[] args) {
String input = "The price is $99.99";
String regex = "\\d+(\\.\\d+)?";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(input);
while (matcher.find()) {
System.out.println(matcher.group());
}
}
}
运行以上代码,输出结果为:
99.99
在上面的示例中,我们将正则表达式编译为一个 Pattern
对象,并使用该对象创建一个 Matcher
对象。然后,我们使用 find()
方法来查找匹配的部分,并使用 group()
方法来获取匹配的结果。
表格
为了更好地理解正则表达式中各个符号的含义,我们来看一个表格,其中列出了常用的正则表达式符号及其含义。
符号 | 含义 |
---|---|
. |
匹配任意字符(除了换行符) |
^ |
匹配行的开头 |
$ |
匹配行的结尾 |
* |
匹配前面的字符零次或多次 |
+ |
匹配前面的字符一次或多次 |
? |
匹配前面的字符零次或一次 |
\d |
匹配任意数字字符 |
\w |
匹配任意字母、数字或下划线字符 |
\s |
匹配任意空白字符 |
[abc] |
匹配字符 a、b 或 c |
[^abc] |
匹配除了字符 a、b 和 c 之外的任意字符 |
(abc) |
匹配字符 abc |
a\|b |
匹配字符 a 或 b |
甘特图
为了更好地展示正则表达式的匹配过程,我们可以使用甘特图。下面是使用 Mermaid 语法绘制的一个简单的甘特图示例:
gantt
dateFormat YYYY-MM-DD
title 正则表达式匹配过程
section 匹配过程
正则表达式编译完成: done, 2022-01-01, 1d
字符串匹配开始: done, 2022-01-02, 1d
找到第一个匹配的数字: done, 2022-01-03, 1d
输出第一个匹配结果: done, 2022-01-04, 1d
找到下一个匹配的数字: done, 2022-01-05, 1d
输出下一个匹配结果: done, 2022-01-06, 1d
找到所有匹配的数字: done, 2022-