欢迎访问宙启技术站
智能推送

Java中常用的函数:正则表达式函数

发布时间:2023-06-02 03:59:36

正则表达式是一种描述文本模式的方式,由一些特殊字符和普通字符组成,可以用来匹配文本或者验证输入是否合法。在Java中,正则表达式被广泛应用于字符串处理、表单验证及数据清洗等方面。下面将介绍Java中常用的正则表达式函数,包括Pattern、Matcher、正则表达式语法等内容。

一、Pattern类

Pattern类是正则表达式的编译表示,它包含了一个编译后的正则表达式的模式。可以利用Pattern类的静态方法compile()来编译正则表达式。常见的Pattern类方法如下:

1、compile(String regex)

该方法接受一个正则表达式字符串作为参数,将其编译成Pattern对象,并返回该对象。

2、matcher(CharSequence input)

该方法接受一个CharSequence类型的字符串作为参数,返回一个Matcher对象,该对象可以用于匹配输入字符串。

3、split(CharSequence input)

该方法接受一个CharSequence类型的字符串作为参数,返回一个由匹配正则表达式的单词组成的字符串数组。

4、toString()

该方法返回Pattern对象的字符串表示形式。

二、Matcher类

Matcher类是用于执行正则表达式匹配的引擎,它包含了对一个输入字符串的匹配结果。Matcher对象是由Pattern对象创建的。常见的 Matcher 类方法如下:

1、matches()

该方法尝试从字符串的开始处开始匹配整个字符串是否符合正则表达式的要求,如果匹配成功,返回true,否则返回false。

2、find()

该方法在任意位置搜索输入字符串,返回 个符合模式的序列的起点。

3、group()

返回与前一次匹配操作所匹配的子序列。

4、group(int group)

返回给定组的匹配子串,其中组号从1开始。

三、常用的正则表达式语法

正则表达式使用的语法是比较复杂的,下面将介绍一些常用的正则表达式语法。

1、元字符

. : 匹配除换行符以外的任意字符。

\d : 匹配任意数字字符。

\w : 匹配任意字母数字字符,包括下划线。

\s : 匹配任意空白字符,包括空格、制表符、换行符等。

^ : 匹配字符串的开始。

$ : 匹配字符串的结束。

2、量词符号

* : 匹配前面的表达式零次或多次。

+ : 匹配前面的表达式一次或多次。

? : 匹配前面的表达式零次或一次。

{n} : 匹配前面的表达式恰好n次。

{n,} : 匹配前面的表达式至少n次。

{n,m} : 匹配前面的表达式至少n次,但不超过m次。

3、分组与捕获

( ) : 分组,将相邻的内容分组为一个整体。

( capture_expression ) : 捕获匹配内容到一个分组中,并将其分配一个组号。

4、反义

[ ^ ] : 匹配除中括号内表达式以外的任意字符。

5、其他常用语法

| : 表示或,例如 a|b 表示匹配a或b。

\ : 转义字符,用于匹配包含特殊字符的文本,例如\.匹配点符号。

四、实例代码演示

下面提供一个简单的Java代码示例,用来演示以上的正则表达式函数和语法。

// 导入正则表达式相关类库

import java.util.regex.Matcher;

import java.util.regex.Pattern;

public class RegexTest {

    public static void main(String[] args) {

        // 定义要匹配的两个字符串

        String s1 = "Java is a programming language. It is also an island.";

        String s2 = "The quick brown fox jumps over the lazy dog.";

        // 定义正则表达式字符串

        String regex1 = "\\bis\\b";

        String regex2 = "\\w+";

        // 定义正则表达式模式

        Pattern pattern1 = Pattern.compile(regex1);

        Pattern pattern2 = Pattern.compile(regex2);

        // 模式匹配

        Matcher matcher1 = pattern1.matcher(s1);

        Matcher matcher2 = pattern2.matcher(s2);

        // 打印匹配结果

        while (matcher1.find()) {

            System.out.println("Match found at: " + matcher1.start() +

                    " - " + (matcher1.end() - 1));

        }

        while (matcher2.find()) {

            System.out.println("Match found at: " + matcher2.start() +

                    " - " + (matcher2.end() - 1) + " " + matcher2.group());

        }

    }

}

以上代码定义了要匹配的两个字符串s1和s2,分别使用了两个不同的正则表达式模式进行匹配,代码执行后会输出匹配结果。输出信息包了两部分,每部分都分别用while匹配。 个while用正则表达式模式来处理字符串s1,并输出了两个匹配结果。第二个while用正则表达式模式来处理字符串s2,并输出了多个匹配结果。

本代码示例仅作为学习正则表达式的入门演示,更细节的实用场景具体还要根据问题和需求来定制匹配语法和实现逻辑。