美文网首页
《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