正则表达式学习
今天又复习了正则表达式的相关知识,现在做一个小结:
“\d”表示[0-9]。
case1:有网址ftp://www.helloworld.com.现在我要在这个字符串中匹配“ftp://”。我们可以在java利用它的Pattern类解决这个问题。
首先,我们利用Patter类构造我们所要匹配的模型。在这里,我们所要匹配的就是“ftp://”。那么无论这个字符串在“ftp://”后面有什么东西,我们都能将它检测出来。由此构造:
Pattern p = Pattern.compile("ftp://.+");
. 在规则中可以代表任何字符串,后面的+则是重复若干个任意字符。之后,需要一个匹配检测器Matcher。
Matcher m = p.matcher("需要被检测的字符串");
最后判断
boolean b = m.matches();
我们就可以根据b得出结果。
有字符串abc hello abc 以及abchelloabcf我们要找出单个的hello。那么我们可以利用新建另一个Pattern。利用类似上面的方法获取所需结果:
String s1 = "abc hello abc";
String s2 = "abchelloabc";
Pattern pa = Pattern.compile("\\shello\\s");
Matcher ma1 = pa.matcher(s1);
Matcher ma2 = pa.matcher(s2);
boolean b1 = ma1.find();
boolean b2 = ma2.find();
System.out.println(b1);
System.out.println(b2);
从而所得结果为:true以及false;接下来分析Matcher的matches()和find()方法的区别。在API中查找我们可以得到,matches()方法仅在所要匹配的序列与匹配的模式相同的时候才会返回true,而find()方法则是所要匹配的模式中的子序列与匹配模式相同就会返回true。