`

Java中的正则表达式学习笔记

 
阅读更多

    关于正则表达式的定义可以看维基百科中的解释——正则表达式。正则表达式是一种强大而灵活的文本处理工具。它提供了一种完全通用的方式,能够解决各种字符串处理相关的问题:匹配、选择、编辑及验证。一般来说,正则表达式就是以某种方式来描述字符串。

    在Java中,\\的意思是“插入一个正则表达式的反斜线,所以其后的字符具有特殊的意义”。在Java中的String类自带了一个正则表达式工具——split()方法,其功能是“将字符创从正则表达式匹配的地方切开。”String类还有一个正则表达式工具是“替换”。你可以只替换正则表达式第一个匹配的子串,或是替换所有匹配的地方(replaceFirst()和replaceAll()方法)。

    正则表达式的完整构造子列表,参考JDK文档java.util.regex包中的Pattern类

    量词描述了一个模式吸收输入文本的方式:(1)贪婪型:量词总是贪婪的,除非有其他的选项被设置。(2)勉强型:用问号来指定,这个量词匹配瞒住模式所需的最少字符数。(3)占有型:只有在Java语言中可以使用。当正则表达式被应用于字符串时,它会产生相当多的状态,以便在匹配失败时可以回溯。而占有型量词并不保存这些中间状态,因此它们可以防止回溯。它们常用来防止正则表达式失控。

    接口CharSequence从CharBuffer,String,StringBuffer,StringBuilder类之中抽象出了字符序列的一般化定义:

interface CharSequence {
    chatAt(int i);
    length();
    subSequence(int start, int end);
    toString();
}

 多数正则表达式操作都接受CharSequence类型的参数。

    Pattern和Matcher,一般来说,相比功能有限的String类,我们可以构造功能更强大的正则表达式对象。请看代码:

import java.util.regex.Pattern;
import java.util.regex.Matcher;

public class TestRegularExpression {
    public static void main(String[] args) {
        if (args.length < 2) {
            System.out.println("Usage:\n java TestRegularExpression "
             + "characterSequence regularExpression+");
            System.exit(0);
        }
         System.out.println("Intput: \"" + args[0] + "\"");
    
         for (String arg: args) {
             System.out.println("Regular expression: \"" + arg + "\"");
             Pattern p = Pattern.compile(arg); // 将String类型的正则表达式转换为一个Pattern对象
            Matcher m = p.matcher(args[0]);// 生成一个Matcher对象,它有很多的功能可用
             while (m.find()) {
                 System.out.println("Match \"" + m.group() + "\" at positions " + m.start() + "-" + (m.end() - 1));
             }
         }
    }

}

 关于Matcher类请参考java.util.regex.Matcher的JDK文档。

    组(Groups)是用括号划分的正则表达式。在表达式A(B(C))D中有三个组:组0是ABCD,组1是BC,组2是C。

// Matcher对象提供一系列方法,用以获取与组相关的信息
public int groupCount() // 返回该匹配器的模式中的分组数目,第0组不包括在里面
public String group() // 返回前一次匹配操作的第0组
public String group(int i) // 返回前一次匹配操作期间指定的组号
public int start(int group) // 返回前一次匹配操作中寻找到的组的起始索引
public int end(int group)  // 返回前一次匹配操作中寻找到的组的最后一个字符索引加一的值

     Pattern标记,Pattern类的compile()方法还有一个版本:Pattern Pattern.compile(String regex, int flag),它接受一个标记参数,以调整匹配的行为。

分享到:
评论

相关推荐

    java正则表达式学习笔记

    ### Java正则表达式基础知识与应用 #### 一、引言 正则表达式是一种强大的文本处理工具,它能够帮助开发者高效地进行字符串的搜索、替换等操作。Java中的正则表达式支持广泛的标准和特性,是进行文本处理任务的理想...

    基于java的开发源码-java多线程反射泛型及正则表达式学习笔记和源码.zip

    基于java的开发源码-java多线程反射泛型及正则表达式学习笔记和源码.zip 基于java的开发源码-java多线程反射泛型及正则表达式学习笔记和源码.zip 基于java的开发源码-java多线程反射泛型及正则表达式学习笔记和源码....

    正则表达式学习笔记

    正则表达式学习笔记,内容详细容易操作,sqlserver java js c++

    基于java的开发源码-多线程反射泛型及正则表达式学习笔记和源码.zip

    在"基于java的开发源码-多线程反射泛型及正则表达式学习笔记和源码.zip"这个压缩包中,包含了三个关键的Java编程概念:多线程、反射和泛型,以及正则表达式。下面我们将详细探讨这些知识点。 1. **多线程**:多线程...

    java多线程反射泛型及正则表达式学习笔记和源码.zip

    这个压缩包包含的“java多线程反射泛型及正则表达式学习笔记和源码”正是针对这些关键知识点的学习资料。 首先,我们来详细探讨多线程。在Java中,多线程允许程序同时执行多个不同的任务,提高了程序的并发性和效率...

    基于Java的源码-多线程反射泛型及正则表达式学习笔记和源码.zip

    《深入理解Java多线程、反射、泛型与正则表达式》 在Java编程领域,多线程、反射、泛型以及正则表达式是四个至关重要的概念,它们为开发者提供了强大的工具,使得程序更加高效、灵活且可维护。这份学习资料包括了...

    (正则表达式)学习笔记

    在这个“正则表达式”学习笔记中,我们将深入探讨这一强大的工具。 1. **基础概念** - **字符集**:包括普通字符(如 `a`、`b`)和特殊字符(如 `.`、`\d`),它们组合起来形成匹配模式。 - **量词**:如 `*` ...

    基于Java的源码-java多线程反射泛型及正则表达式学习笔记和源码.zip

    在这个基于Java的源码压缩包中,我们主要探讨四个核心概念:多线程、反射、泛型和正则表达式。这些是Java开发中的重要工具,对于理解和优化程序性能至关重要。 首先,多线程在Java中是一个基础且关键的概念,它允许...

    精通正则表达式(英文版+中文目录)

    在实践中,书中会讨论如何在各种编程语言中使用正则表达式,如JavaScript、Python、Java等,并给出具体的示例代码,帮助读者理解如何在实际开发中应用正则表达式。此外,书中还会讲解正则表达式引擎的工作原理,这...

    暑假培训学习笔记之 java正则表达式

    Java正则表达式是编程语言Java中的一个强大工具,用于处理字符串模式匹配和搜索替换操作。...对于“暑假培训学习笔记之 java正则表达式”这个主题,深入学习这些知识点将有助于提升你在Java编程中的文本处理能力。

    基于Java的实例源码-多线程反射泛型及正则表达式学习笔记和源码.zip

    总的来说,这个压缩包中的源码和学习笔记是深入理解并熟练运用Java多线程、反射、泛型和正则表达式的宝贵资源。通过研究这些实例,开发者不仅可以巩固理论知识,还能提升实际编程技巧,从而在日常工作中编写出更加...

    java笔记之正则表达式

    在“java笔记之正则表达式”这篇笔记中,作者深入探讨了正则表达式的基本概念、操作方法以及在Java中的应用。 首先,正则表达式(Regular Expression)是一组符合特定规则的字符序列,主要用于字符串的查找、匹配、...

    Java正则表达式笔记.pdf

    Java正则表达式是编程语言Java中用于处理文本的强大工具,它允许开发人员根据特定模式匹配、搜索和替换文本。在Java 2中引入的`java.util.regex`包提供了全面的支持,使得正则表达式的使用变得更为便捷。本文将探讨...

    Java正则表达式学习笔记

    1. Java的正则表达式介绍jdk软件包中java.util.regex中,接口MatchResult,类Matcher和类Pattern。  MatchResult:此接口包含用于确定与正则表达式匹配结果的查询方法。通过 MatchResult可以查看匹配边界、组和组...

    正则表达式的笔记记录呢

    正则表达式是一个深奥且强大的工具,学习和理解其原理和技巧对于处理文本数据至关重要。熟练掌握正则表达式可以大大提高编程效率和代码质量。通过不断练习和使用,你可以更好地理解和运用这些概念来解决各种文本处理...

    正则表达式笔记+源码!!!!!!

    首先,我们来看看“java正则表达式大全(参考).md”这个文件名,这很可能是一个关于Java语言中正则表达式的详细指南或教程。Java中的正则表达式使用`java.util.regex`包中的类和方法来实现,如`Pattern`、`Matcher`等...

    正则表达式例子及笔记

    整理正则表达式的学习笔记有助于加深理解,提高记忆效果。可以将各种常见模式、特殊字符、语法结构和实例应用进行归纳,方便日后查阅和实践。通过分析和总结,可以逐步掌握正则表达式的精髓,提升在实际工作中解决...

    jsp+正则表达式实用总结

    在IT行业中,JavaServer Pages(JSP)与正则表达式是两种非常重要的技术,它们在网页开发和数据处理中起着至关重要的作用。这篇内容将深入探讨JSP与正则表达式的结合使用,以及它们在实际项目中的应用。 首先,JSP...

Global site tag (gtag.js) - Google Analytics