Java正则表达式

简介: 版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/twilight_karl/article/details/53994857 Parrern类没有构造函数,使用一下方法创建对象: Pattern compile(String regex) 将给定的正则表达式编译到模式中。
版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/twilight_karl/article/details/53994857

Parrern类

没有构造函数,使用一下方法创建对象:
Pattern compile(String regex) 将给定的正则表达式编译到模式中。
Pattern compile(String regex, int flags) 将给定的正则表达式编译到具有给定标志的模式中。

一些方法:
int flags() 返回此模式的匹配标志。
Matcher matcher(CharSequence input) 创建匹配给定输入与此模式的匹配器。
matches(String regex, CharSequence input) 编译给定正则表达式并尝试将给定输入与其匹配。
pattern() 返回在其中编译过此模式的正则表达式。
String[] split(CharSequence input) 围绕此模式的匹配拆分给定输入序列。
String[] split(CharSequence input, int limit) 围绕此模式的匹配拆分给定输入序列。
String toString() 返回此模式的字符串表示形式。

典型的调用顺序是 :

Pattern p = Pattern.compile(“a*b”);
Matcher m = p.matcher(“aaaaab”);
boolean b = m.matches();

也可直接这样调用,功能相同:
boolean b = Pattern.matches(“a*b”, “aaaaab”);

例:

//判断是否满足表达式
public class testMain2 {
    public static void main(String[] args) {
        String regex="a\\d{3}b";
        String input="a111b";
        //创建Pattern对象
        Pattern p = Pattern.compile(regex);
        //创建Matcher对象
        Matcher matcher= p.matcher(input);
        //使用Matcher中的方法
        boolean flag = matcher.matches();
        System.out.println(flag);
    }
}

Matcher类

find() 该方法扫面输入的序列查找与该模式匹配的下一个子序列
group() 返回找到的内容。group()group(0)表示匹配整个表达式的子字符串
String group(int group) 返回在以前匹配操作期间由给定组捕获的输入子序列。
替换(不改变原字符串):
String replaceAll(String replacement) 替换模式与给定替换字符串相匹配的输入序列的每个子序列。
String replaceFirst(String replacement) 替换模式与给定替换字符串匹配的输入序列的第一个子序列。
分割:
split(String str) 按str分割(str可以为正则表达式)
(String类中的方法)

可循环使用find和group从而将所有满足情况的子字符串输出:

public class testMain2 {
    public static void main(String[] args) {
        String regex="a\\db";
        String input="a1ba2ba3ba4ba5b";
        Pattern p = Pattern.compile(regex);
        Matcher matcher= p.matcher(input);
        while(matcher.find()){
            System.out.println(matcher.group());
        }
    }
}

结果:
a1b
a2b
a3b
a4b
a5b

可以使用split(String str)将字符串分割成字符数组,以str作为分隔符:

        String [] s = input.split("\\d+");
        for(String temp : s){
            System.out.println(temp);
        }

结果:
a
ba
ba
ba
ba
b

相关文章
|
3天前
|
Java
Java一分钟之运算符与表达式初探
【5月更文挑战第7天】本文介绍了Java中的主要运算符,包括算术、比较、逻辑、位、赋值和条件运算符。讨论了类型转换、运算顺序和逻辑短路等常见问题,并提供了避免错误的建议。通过代码示例展示了运算符的使用,强调理解运算符对于编写高效Java代码的重要性。
18 0
Java一分钟之运算符与表达式初探
|
5天前
|
安全 Java 程序员
Java 8新特性之Lambda表达式
【5月更文挑战第5天】 本文将介绍Java 8中的一个重要新特性——Lambda表达式。Lambda表达式是Java 8引入的一种简洁、易读的函数式编程语法,它允许我们将函数作为参数传递给方法,或者作为返回值。通过使用Lambda表达式,我们可以编写更简洁、更易读的代码,提高开发效率。
|
9天前
|
分布式计算 Java API
Java 8新特性之Lambda表达式与Stream API
【5月更文挑战第1天】本文将介绍Java 8中的两个重要特性:Lambda表达式和Stream API。Lambda表达式是一种新的函数式编程语法,可以简化代码并提高可读性。Stream API是一种用于处理集合的新工具,可以方便地进行数据操作和转换。通过结合Lambda表达式和Stream API,我们可以更加简洁高效地编写Java代码。
|
10天前
|
Java
java lambda 表达式中的双冒号和箭头的用法
java lambda 表达式中的双冒号和箭头的用法
|
11天前
|
Java API
Java 8新特性之Lambda表达式详解
【4月更文挑战第29天】本文将深入探讨Java 8中引入的Lambda表达式,这是Java历史上的一次重大变革。我们将详细解析Lambda表达式的基本概念,语法结构,以及如何在实际编程中应用。此外,我们还将探讨Lambda表达式与函数式接口的关系,以及它如何改变我们编写和理解Java代码的方式。
|
13天前
|
并行计算 Java API
【专栏】Java 8的Lambda表达式增强了函数式编程,允许以匿名函数形式传递行为
【4月更文挑战第27天】Java 8的Lambda表达式增强了函数式编程,允许以匿名函数形式传递行为。其基本语法`(params) -> expression/statements`,类型由参数推断,可引用final或effectively final的外部变量。Lambda广泛应用于集合操作(如Stream API)、并行流处理和GUI事件处理,简化代码并提高效率。通过实例,展示了Lambda在集合筛选、并行计算和事件处理中的应用,从而提高开发质量和效率。
|
14天前
|
Java 编译器 API
Java基础教程(17)-Java8中的lambda表达式和Stream、Optional
【4月更文挑战第17天】Lambda表达式是Java 8引入的函数式编程特性,允许函数作为参数或返回值。它有简洁的语法:`(parameters) -> expression 或 (parameters) ->{ statements; }`。FunctionalInterface注解用于标记单方法接口,可以用Lambda替换。
|
15天前
|
Java 测试技术 程序员
滚雪球学Java(21):Java正则表达式
【4月更文挑战第10天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
18 2
滚雪球学Java(21):Java正则表达式
|
15天前
|
人工智能 Java
Java之Lambda表达式的介绍
Java之Lambda表达式的介绍
|
16天前
|
Java
【Java高级】彻底弄懂lambda表达式(上)
【Java高级】彻底弄懂lambda表达式(上)
9 0