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

相关文章
|
4天前
|
Java
探索Java中的Lambda表达式
【9月更文挑战第28天】Lambda表达式,这一Java 8引入的轻量级语法结构,为函数式编程提供了强有力的支持。它简化了代码,提高了开发效率,并使得并行处理数据变得异常容易。本文将通过直观的例子和详细的解释,带领读者深入理解Lambda表达式的奥秘,从而在编程实践中更加灵活地运用它们。
|
5天前
|
Java API
探索Java中的Lambda表达式
【9月更文挑战第27天】Lambda表达式,作为Java 8的一大亮点,为我们的编程世界带来了一股清新之风。它以其简洁明了的语法和强大的功能,让我们在处理集合、线程等复杂操作时如鱼得水。本文将带你一探Lambda表达式的奥秘,让你领略到它的魅力所在。
17 6
|
6天前
|
Java API 开发者
探索Java中的Lambda表达式:简洁与强大的代码实践
本文深入探讨Java中Lambda表达式的定义、用法及优势,通过实例展示其如何简化代码、提升可读性,并强调在使用中需注意的兼容性和效率问题。Lambda作为Java 8的亮点功能,不仅优化了集合操作,还促进了函数式编程范式的应用,为开发者提供了更灵活的编码方式。
|
2天前
|
Java 开发者
探索Java中的Lambda表达式:简化你的代码之旅##
【8月更文挑战第62天】 Java 8的发布为开发者带来了诸多新特性,其中最引人注目的无疑是Lambda表达式。这一特性不仅让代码变得更加简洁,还极大地提升了开发的效率。本文将通过实际示例,展示如何利用Lambda表达式来优化我们的代码结构,同时探讨其背后的工作原理和性能考量。 ##
|
3天前
|
Java API 开发者
探索Java中的Lambda表达式
【9月更文挑战第29天】Lambda表达式,在Java编程中,它不仅仅是一种语法糖,更是简化代码、提升效率的利器。本文将通过浅显易懂的语言和实际代码示例,带你走进Lambda的世界,了解其背后的原理和在日常开发中的应用,让你的代码更简洁、更高效。
|
6天前
|
Java API 开发者
探索Java中的Lambda表达式:简化代码,提升效率
【9月更文挑战第27天】在Java 8中引入的Lambda表达式为编程带来了革命性的变化。通过简洁的语法和强大的功能,它不仅简化了代码编写过程,还显著提升了程序的执行效率。本文将深入探讨Lambda表达式的本质、用法和优势,并结合实例演示其在实际开发中的应用。无论你是Java新手还是资深开发者,都能从中获得启发,优化你的代码设计。
|
8天前
|
Java 测试技术
java正则表达式
java正则表达式
23 7
|
9天前
|
Java 开发者
探索Java中的Lambda表达式
【9月更文挑战第23天】本文将深入探讨Java中的Lambda表达式,从其基本概念、语法结构到实际应用案例,旨在帮助读者更好地理解并掌握这一现代编程特性。我们将通过简洁明了的代码示例,展示Lambda表达式如何简化代码、提高开发效率。无论你是Java新手还是资深开发者,这篇文章都将为你提供有价值的见解和技巧。
|
7天前
|
Java API
Java中的Lambda表达式及其应用
本文将深入探讨Java中的Lambda表达式,通过简洁易懂的语言和示例代码,帮助读者理解Lambda表达式的定义、优势以及在实际开发中的应用。同时,我们将解析一些常见的使用场景,并展示如何利用Lambda表达式简化代码,提高编程效率。
18 2
|
8天前
|
Java 程序员 API
Java 8新特性之Lambda表达式与Stream API的探索
【9月更文挑战第24天】本文将深入浅出地介绍Java 8中的重要新特性——Lambda表达式和Stream API,通过实例解析其语法、用法及背后的设计哲学。我们将一探究竟,看看这些新特性如何让Java代码变得更加简洁、易读且富有表现力,同时提升程序的性能和开发效率。
下一篇
无影云桌面