`

Java Regex - Pattern (java.util.regex.Pattern)

阅读更多

Java中的Pattern类是Java正则表达式API的主要入口类,不管在Java中你何时要使用正则表达式,那你必须是从Pattern这个类开始的。

 

在Java中,涉及正则表达式的时候也经常涉及模式匹配。因此正则表达式在Java中的类也就叫做Pattern。

因此,术语上讲,在Java中它不主张使用文本,而是模式匹配意味着就是正则表达式的匹配

 

在Java中,Pattern类被用作两个地方,你可以使用Pattern.matches()方法去快速的检查一个文本(String类型)是否匹配一个给定的正则表达式,或者你

可以用Pattern.compile()方法编译一个Pattern的实例去多次匹配正则表达式从而避免使用多个文本。

Pattern.matches()和Pattern.compile()这两个方法都会在下面进行介绍。


Pattern.matches()

最简单的检查一个正则表达式是否匹配某一个文本的方法就是使用Pattern.matches()静态方法,下面是Pattern.matches()的举例。

import java.util.regex.Pattern;

public class PatternMatchesExample {

    public static void main(String[] args) {

        String text    =
            "This is the text to be searched " +
            "for occurrences of the pattern.";

        String pattern = ".*is.*";

        boolean matches = Pattern.matches(pattern, text);

        System.out.println("matches = " + matches);
    }
}
 

这个Pattern.matches()的例子是在搜索一个名为text的String类型引用的变量里面是否出现单词"is",并且这个单词"is"的前后都允许有0个或者多个字

符(那两个".*"的模式)。

如果你想用Pattern.matches()这个方法仅仅代替一个文本去做一次模式的检查,那是很好的。但是你需要进行
多次匹配多次出现的时候,甚至想访问各式各样的匹配的,或者仅仅需要不是默认的配置的时候,那么你
就需要利用Pattern.compile()方法编译一个Pattern的实例。

Pattern.compile()

如果你需要不止一次利用正则表达式去匹配一个文本的时候,你需要用Pattern.compile()去创建一个Pattern的实例,下面是举例。

 

import java.util.regex.Pattern;

public class PatternCompileExample {

    public static void main(String[] args) {

        String text    =
                "This is the text to be searched " +
                "for occurrences of the http:// pattern.";

        String patternString = ".*http://.*";

        Pattern pattern = Pattern.compile(patternString);
    }
}
 

你也可以使用一些特殊的标记Pattern.compile()去编译一个Pattern的实例,下面是一个举例:

Pattern pattern = Pattern.compile(patternString, Pattern.CASE_INSENSITIVE);
Pattern类中包含一些常量标记的列表,这些列表都是int类型的,你可以使用它们在一些特定的场合。下面是使用一个标记在进行模式匹配的时候忽略大小写。如果你想获得更多的标记信息,你可以去查看Pattern的javadoc文件。

Pattern.matcher()

如果你已经获得了Pattern的实例,那么你就可以用他去获取Matcher实例,这个Matcher实例可以在文本中进行模式匹配。下面是从Pattern实例获取Matcher实例的例子:

Matcher matcher = pattern.matcher(text);

Matcher类中有一个matches()方法,它尝试着在文本中进行模式匹配。下面是关于如何使用Matcher的全部例子:

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

public class PatternMatcherExample {

    public static void main(String[] args) {

        String text    =
            "This is the text to be searched " +
            "for occurrences of the http:// pattern.";

        String patternString = ".*http://.*";

        Pattern pattern = Pattern.compile(patternString, Pattern.CASE_INSENSITIVE);

        Matcher matcher = pattern.matcher(text);

        boolean matches = matcher.matches();

        System.out.println("matches = " + matches);
    }
}
 
Matcher类是非常高级的,他允许你使用各式各样的模式进行部分文本的匹配。为了保持此文的简短,Matcher类将在其他文章进行介绍。

Pattern.split()

Pattern类中的split()方法可以用一个正则表达式作为分隔符把文本分割为一个String类型的数组,这是Pattern.split()方法的举例:

 

import java.util.regex.Pattern;

public class PatternSplitExample {

    public static void main(String[] args) {
    
        String text = "A sep Text sep With sep Many sep Separators";
        
        String patternString = "sep";
        Pattern pattern = Pattern.compile(patternString);
        
        String[] split = pattern.split(text);
        
        System.out.println("split.length = " + split.length);
        
        for(String element : split){
            System.out.println("element = " + element);
        }
    }
}
上述例子中Pattern.split()方法把一个文本分割成了5个单独的字符串,每个字符串中都不包含之前的方
法中把他们分割开的分隔符。

Pattern.pattern()

pattern()方法简单的返回Pattern类中已经编译过的那个正则表达式。下面是举例。

import java.util.regex.Pattern;

public class PatternPatternExample {

    public static void main(String[] args) {
    
        String patternString = "sep";
        Pattern pattern = Pattern.compile(patternString);
        
        String pattern2 = pattern.pattern();
    }
}

在这个例子中,pattern2变量将包含"sep",这个值就是在编译Pattern获得实例时产生的。

本文转自: http://tutorials.jenkov.com/java-regex/pattern.html

 

PS:头一次翻译外国人写的博客,唉,自己是基本能看懂,但是翻译成中文,那可真是太费劲了,以后还是直接原文转载吧!

分享到:
评论

相关推荐

    java 正则表达式应用jar包 regex-smart.jar

    在Java中,正则表达式是通过java.util.regex包提供的接口和类来实现的。`regex-smart.jar`这个库显然是为了简化开发者在Java项目中使用正则表达式的流程,它提供了一系列内置的验证、提取和清洗方法,使得处理字符串...

    commons-fileupload-1.2.jar和commons-io-1.3.2.jar

    新建一个servlet: FileUpload.java用于文件上传: package com.drp.util.servlet; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet....

    article-regex-primer.rar_The Few

    Reading the javadoc forjava.util.regex. Pattern is a must to see how the Java regex patterns aredi erent from other languages such as Perl. Most of the functions discussed herin are from thejava....

    java 正则表达试

    jakarta-oro.jar 及代码 import org.apache.oro.text.regex.MalformedPatternException; import org.apache.oro.text.regex.MatchResult; import org.apache.oro.text.regex...import org.apache.oro.text.regex.Util;

    jakarta-oro-2.0.8.zip

    - 源代码文件:.java文件,包含了项目的所有源代码。 - 类库文件:编译后的.jar文件,可以直接在Java项目中引用。 - 文档:如API文档、用户指南等,帮助开发者了解和使用该库。 - 示例代码:示例应用程序或测试用例...

    jakarta-oro-2.0.8.zip_jakarta oro.jar 2.0_jakarta-oro-2_jakarta-

    在Java标准库中,虽然内置了java.util.regex包来处理正则表达式,但Jakarta ORO提供了额外的功能和性能提升,特别在处理大量文本和复杂模式匹配时更为明显。Jakarta ORO库的核心特性包括: 1. **高性能匹配引擎**:...

    java 正则表达式大全 菜鸟也能玩转

    在Java中,`java.util.regex`包提供了支持正则表达式的类库,主要包括`Pattern`、`Matcher`和`PatternSyntaxException`等几个核心类。 #### 二、基础语法 1. **字符匹配**: - `.`:匹配任意单个字符。 - `\d`:...

    《java学习》-java学习笔记.zip

    Java提供了`java.util.regex`包,包含了Pattern和Matcher类来支持正则表达式的编译和匹配操作。理解如何构建和使用正则表达式对于数据验证、文本提取等场景至关重要。 2. **Java基础(javaBasic1.md、javaBasic2.md...

    JAVA正则表达式--Pattern和Matcher

    Java正则表达式的实现主要依赖于`java.util.regex`包中的`Pattern`和`Matcher`两个核心类。本文将深入探讨这两个类的功能以及如何使用它们来进行字符串的匹配和操作。 #### 二、Pattern 类详解 `Pattern` 类代表了...

    java_api(1.5--1.7).zip

    正则表达式是文本处理和模式匹配的强大工具,Java API提供了`java.util.regex`包来支持正则表达式的操作。这个包包含`Pattern`、`Matcher`等类,允许开发者进行字符串的查找、替换、分割等操作。 设计模式是解决...

    java常用工具类——个人总结

    - `java.util.regex.Pattern` 和 `java.util.regex.Matcher` 支持正则表达式匹配和操作。 6. **网络工具类**: - `java.net.URL` 和 `java.net.URLConnection` 用于处理网络连接和资源获取。 - `java.net.Socket...

    pattern-dissector:探索 java.util.regex.Pattern 类的内部结构

    探索 Java 正则表达式语法的更多细节,并了解Pattern类中的引擎如何实际解释正则表达式。 不是通过文档(通过合同)推断正则表达式的含义,这允许我们直接验证引擎如何解释正则表达式。 自该项目开始(2014 年 2 ...

    struts2.5.16升级过程中遇到问题详述

    <url-pattern>/*</url-pattern> </filter-mapping> ``` #### 五、JSP文件调整 - **调整说明**:在升级到Struts2.5.16后,可能需要对项目的JSP文件进行一些微调以适应新版本的变化。 ```jsp <%@ page import="com...

    java 正则表达式 Java Regex.rar

    在Java中,正则表达式(Regex)是通过Pattern类和Matcher类来实现的,这两个类位于java.util.regex包中。下面我们将深入探讨Java正则表达式的基本概念、语法、常见使用方法以及如何在实际开发中应用。 1. **基本...

    java基础知识学习教程-10常用类库.pptx

    Java 中提供了两个正则表达式类:Pattern 和 Matcher,位于 java.util.regex 包中。Pattern 类用于表示正则表达式的模式,提供了多种方法,如编译正则表达式、匹配字符串等。Matcher 类用于匹配字符串,提供了多种...

    javaregex.chm

    Java中的正则表达式支持是通过`java.util.regex`包提供的,主要包括`Pattern`、`Matcher`和`PatternSyntaxException`三个核心类。`Pattern`类用于编译正则表达式并创建模式,`Matcher`类则负责匹配这些模式到目标...

    常用的java工具类

    - `java.util.regex`:这个包提供了正则表达式相关的工具类,如`Pattern`和`Matcher`,用于进行复杂的字符串匹配和替换。 2. **文件处理**: - `java.io`包:包含了各种I/O流的类,如`File`用于文件和目录的操作...

    Java正则表达式入门及用法

    Java自JDK 1.4版本开始提供了`java.util.regex`包,这为Java开发人员处理字符串提供了极大的便利。掌握正则表达式的用法对于编程来说至关重要。 #### 二、基本语法介绍 1. **转义字符**:Java中有一些预定义的转义...

    无涯教程(LearnFk)-Java-正则教程离线版.pdf

    在Java中进行正则表达式操作主要依赖于java.util.regex包,这个包提供了编译和匹配正则表达式的功能。 1. java.util.regex包中的核心类: - Pattern类:这个类的对象代表编译后的正则表达式。Pattern类的实例没有...

    基于java的邮箱地址验证 jaev.zip

    在Java中,进行邮箱地址验证通常涉及到正则表达式(Regular Expressions)和Java的内置类如`java.util.regex.Pattern`和`java.util.regex.Matcher`。正则表达式是一种强大的文本处理工具,可以用来匹配、查找、替换...

Global site tag (gtag.js) - Google Analytics