Java java.util.regex

这个package下有两个class,一个是Pattern,一个是Matcher

Pattern负责存放正则表达式, 而Matcher存放要读取的数据。
假如我们有一个字符串"hello world", 而我们要查询里面是否包含wo
就是

Pattern p=new Pattern("wo");
//这里讲wo作为正则表达式传输到了Pattern对象里面

Matcher m=p.matcher("hello world");
//这里的“hello world”就是要读取的数据。

接下来我们就可以调用Matcher的方法来获取结果。
首先看一下boolean matches()
文档上写的是:Attempts to match the entire region against the pattern.
也就是说这里要用正则式"wo"来匹配"hello world"整句,因此
m.matches()必定会返回false。


比较常用的方法是boolean find()
Attempts to find the next subsequence of the input sequence that matches the pattern.
这里会对数据对象进行逐个的判断,一旦发现匹配的, 就会返回true。
这里要注意的是当发现匹配的字符串以后, 游标会指向这个字符串后边的位置,
比如:
Pattern p= Pattern.compile("\\d{4}");

Matcher m=p.matcher("2222-333344");

System.out.println(m.find());
System.out.println(m.find());
System.out.println(m.find());
这里会返回 true, true, false
也就是说第一次匹配到2222, 第二次匹配到3333,
这是游标已经到了4这个位置, 也就不会再匹配到任何符合正则式的字符串了。
最终就返回false。

接下来是String group()
这个方法要和find()一起使用,
假如我们在上面的代码的每一个find()的下面加入
System.out.println(m.group());
那么就会显示结果:
2222
3333
Exception in thread "main" java.lang.IllegalStateException: No match found

由于第三个匹配对象不存在, 所以就会抛出异常


通过这个方法我们就可以对文本对象进行解析, 获取自己想要的内容。

你可能感兴趣的:(java,正则表达式)