美文网首页
《Oracle Java SE编程指南》28-02:正则表达式A

《Oracle Java SE编程指南》28-02:正则表达式A

作者: AT阿宝哥 | 来源:发表于2020-05-21 00:18 被阅读0次
    课程封面-JavaSE-AT阿宝哥

    内容导航

    • 前言
    • 1、Pattern
    • 2、Matcher
    • 3、PatternSyntaxException

    前言

    正则表达式如何表示的?正则表达式相关的API在java.util.regex包,主要包含三个类:PatternMatcherPatternSyntaxException


    1、Pattern

    Pattern 类的对象是正则表达式的编译表示,即模式对象。

    1.1、创建对象

    Pattern 类不提供公共构造器。要创建一个模式对象,必须首先调用它的compile静态方法,然后该方法将返回一个 Pattern对象,这些方法接受一个正则表达式作为第一个参数。

    示例代码:

    
    import java.util.regex.Pattern;
    
        Pattern pattern = Pattern.compile("Abc");
        
    

    注意,foo不仅仅是个字符串,更重要的是表示多个字符串的共同特征,即模式。因为,在一个长字符串中,或者多个字符串中,foo都有可能出现多次或者不会出现。比如foofoofoofoo-foo-foofoo_foo_foo等等。


    2、Matcher

    Matcher类的对象是解释模式并对输入字符串执行匹配操作的引擎。

    2.1、创建对象

    Matcher不提供公共构造器。通过调用 Pattern 对象上的matcher方法,可以获得一个Matcher对象。

    示例代码:

    
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    
            Pattern pattern = Pattern.compile("Abc");
            Matcher matcher = pattern.matcher("AbcAbcAbc");
    
    

    2.2、匹配方法

    序号 名称 简介
    01 boolean find( ) 尝试查找与该模式匹配的输入序列的下一个子序列。
    02 boolean lookingAt( ) 尝试将从区域开头开始的输入序列与该模式匹配。
    03 boolean matches( ) 尝试将整个区域与模式匹配。

    示例代码:

    
    
    
    

    运行结果:

    
    
    

    2.3、索引方法

    序号 名称 简介
    01 int start() 返回以前匹配的初始索引。
    02 int end() 返回最后匹配字符之后的偏移量。
    03 int regionEnd( ) 报告此匹配器区域的结束索引(不包括)。
    04 int regionStart( ) 报告此匹配器区域的开始索引。

    示例代码:

    
    
    
    

    运行结果:

    
    
    

    2.4、其它方法

    序号 名称 简介
    01 Pattern pattern( ) 返回由此匹配器解释的模式。
    02 String group(( ) 返回由以前匹配操作所匹配的输入子序列。
    03 String group(int group) 返回在以前匹配操作期间由给定组捕获的输入子序列。

    示例代码:

    
    
    
    

    运行结果:

    
    
    

    3、PatternSyntaxException

    PatternSyntaxException 对象是一个未检查的异常,它指示正则表达式模式中的语法错误。

    示例代码:

    
    package com.company.project.demo020301;
    
    import java.util.regex.Pattern;
    
    public class Client {
    
        public static void main(String[] args) {
    
            Pattern pattern = Pattern.compile("A][bc");
    
            System.out.println(pattern);
    
        }
    
    }
    
    
    

    运行结果:

    
    Exception in thread "main" java.util.regex.PatternSyntaxException: Unclosed character class near index 4
    A][bc
        ^
        at java.util.regex.Pattern.error(Pattern.java:1969)
        at java.util.regex.Pattern.clazz(Pattern.java:2562)
        at java.util.regex.Pattern.sequence(Pattern.java:2077)
        at java.util.regex.Pattern.expr(Pattern.java:2010)
        at java.util.regex.Pattern.compile(Pattern.java:1702)
        at java.util.regex.Pattern.<init>(Pattern.java:1352)
        at java.util.regex.Pattern.compile(Pattern.java:1028)
        at com.company.project.demo020301.Client.main(Client.java:10)
    
    

    持续更新,欢迎留言提议!
    码字很累,多点赞多赞赏!


    扫描二维码,关注AT阿宝哥

    相关文章

      网友评论

          本文标题:《Oracle Java SE编程指南》28-02:正则表达式A

          本文链接:https://www.haomeiwen.com/subject/lhlaohtx.html