内容导航:
- 前言
- 1、Pattern
- 2、Matcher
- 3、PatternSyntaxException
前言
正则表达式如何表示的?正则表达式相关的API在java.util.regex
包,主要包含三个类:Pattern
,Matcher
,PatternSyntaxException
。
1、Pattern
Pattern
类的对象是正则表达式的编译表示,即模式对象。
1.1、创建对象
Pattern
类不提供公共构造器。要创建一个模式对象,必须首先调用它的compile
静态方法,然后该方法将返回一个 Pattern
对象,这些方法接受一个正则表达式作为第一个参数。
示例代码:
import java.util.regex.Pattern;
Pattern pattern = Pattern.compile("Abc");
注意,foo
不仅仅是个字符串,更重要的是表示多个字符串的共同特征,即模式。因为,在一个长字符串中,或者多个字符串中,foo
都有可能出现多次或者不会出现。比如foofoofoo
、foo-foo-foo
、foo_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阿宝哥
网友评论