Pattern
一个Pattern是一个正则表达式经编译后的表示模式。
Matcher
一个Matcher工具是一个状态呆板,它依据Pattern工具做为匹配模式对字符串展开匹配查抄。
首先一个Pattern实例订制了一个所用语法与PERL的雷同的正则表达式经编译后的模式,然后一个Matcher实例在这个给定的Pattern实例的模式节制下举办字符串的匹配事情。
以下我们就别离来看看这两个类:
2.Pattern类:
Pattern的要领如下:
static Pattern
compile(String regex)
将给定的正则表达式编译并赋予给Pattern类
static Pattern
compile(String regex, int flags)
同上,但增加flag参数的指定,可选的flag参数包罗:CASE INSENSITIVE,MULTILINE,DOTALL,UNICODE CASE, CANON EQ
int
flags()
返回当前Pattern的匹配flag参数.
Matcher
matcher(CharSequence input)
生成一个给定数名的Matcher工具
static boolean
matches(String regex, CharSequence input)
编译给定的正则表达式而且对输入的字串以该正则表达式为模开展匹配,该要领适合于该正则表达式只会利用一次的环境,也就是只举办一次匹配事情,因为这种环境下并不需要生成一个Matcher实例。
String
pattern()
返回该Patter工具所编译的正则表达式。
String[]
split(CharSequence input)
将方针字符串凭据Pattern里所包括的正则表达式为模举办支解。
String[]
split(CharSequence input, int limit)
浸染同上,增加参数limit目标在于要指定支解的段数,如将limi设为2,那么方针字符串将按照正则表达式分为割为两段。
一个正则表达式,也就是一串有特定意义的字符,必需首先要编译成为一个Pattern类的实例,这个Pattern工具将会利用 matcher()要领来生成一个Matcher实例,接着便可以利用该 Matcher实例以编译的正则表达式为基本对方针字符串举办匹配事情,多个Matcher是可以共用一个Pattern工具的。
此刻我们先来看一个简朴的例子,再通过阐明它来相识奈何生成一个Pattern工具而且编译一个正则表达式,最后按照这个正则表达式将方针字符串举办支解:
import java.util.regex.*; public class Replacement{ public static void main(String[] args) throws Exception { // 生成一个Pattern,同时编译一个正则表达式 Pattern p = Pattern.compile("[/]+"); //用Pattern的split()要领把字符串按"https://www.jb51.net/"支解 String[] result = p.split( "Kevin has seen《LEON》seveal times,because it is a good film." +"/ 凯文已经看过《这个杀手不太冷》屡次了,因为它是一部" +"好影戏。/名词:凯文。"); for (int i=0; i<result.length; i++) System.out.println(result[i]); } }
输出功效为:
Kevin has seen《LEON》seveal times,because it is a good film.
凯文已经看过《这个杀手不太冷》屡次了,因为它是一部好影戏。
名词:凯文。
很明明,该措施将字符串按"https://www.jb51.net/"举办了分段,我们以下再利用 split(CharSequence input, int limit)要领来指定分段的段数,措施窜改为:
tring[] result = p.split("Kevin has seen《LEON》seveal times,because it is a good film./ 凯文已经看过《这个杀手不太冷》屡次了,因为它是一部好影戏。/名词:凯文。",2);
这内里的参数"2"表白将方针语句分为两段。
输出功效则为:
Kevin has seen《LEON》seveal times,because it is a good film.
凯文已经看过《这个杀手不太冷》屡次了,因为它是一部好影戏。/名词:凯文。
由上面的例子,我们可以较量出java.util.regex包在结构Pattern工具以及编译指定的正则表达式的实现手法与我们在上一篇中所先容的Jakarta-ORO 包在完成同样事情时的不同,Jakarta-ORO 包要先结构一个PatternCompiler类工具接着生成一个Pattern工具,再将正则表达式用该PatternCompiler类的compile()要领来将所需的正则表达式编译赋予Pattern类:
PatternCompiler orocom=new Perl5Compiler();
Pattern pattern=orocom.compile("REGULAR EXPRESSIONS");
PatternMatcher matcher=new Perl5Matcher();
可是在java.util.regex包里,我们仅需生成一个Pattern类,直接利用它的compile()要领就可以到达同样的结果:
Pattern p = Pattern.compile("[/]+");
因此好像java.util.regex的结构法比Jakarta-ORO更为简捷并容易领略。
3.Matcher类:
Matcher要领如下: