此篇文章是记录我在学习Java正则表达式时候学到的和遇到的坑。
先来说说 Matcher 里面的三个方法(取的结果以group()方法为例子)
好了上测试代码:
package com.wjj.utils;import java.util.regex.Matcher;import java.util.regex.Pattern;/*** @author 作者 : 榨菜哥* @version 创建时间:2016年8月18日 上午8:47:58* 类说明:正则表达式的练习*/public class Regex { //find方法测试 public static void find(String html) { String regex = "//d//d//d"; Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE); Matcher matcher = pattern.matcher(html); System.out.print("find():"); if (matcher.find()) { System.out.println(matcher.group()); } } //matches方法测试 public static void matches(String html) { String regex = "^//w//d//d//d"; Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE); Matcher matcher = pattern.matcher(html); System.out.print("matches():"); if (matcher.matches()) { System.out.println(matcher.group()); } } //lookingAt方法测试 public static void lookingAt(String html) { String regex = "//w//d//d"; Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE); Matcher matcher = pattern.matcher(html); System.out.print("lookingAt():"); if (matcher.lookingAt()) { System.out.println(matcher.group()); } } public static void main(String[] args) { //find方法测试 find("a123b"); //matches方法测试 matches("a123"); //lookingAt方法测试 lookingAt("a123b"); }}
输出结果:
find():123
matches():a123
lookingAt():a12
小结:正则表达式本身并不难,平常使用的时候只要按照规则来写就好了。在学习中理解matches、find、和lookingAt三个方法花了我比较长的时间,一直不能理解完全匹配和部分匹配是什么意思,最后还是在stackoverflow上找到了想要的答案。
以上是个人学习的理解,有不对之处,希望给予指点。
(补充:正则表达式Pattern如果调用多次容易出问题,比如内存溢出,因为Pattern每执行一次就编译一次正则表达式,因此建议将需要的正则表达式进行预编译。)
正则表达式学习教程: http://deerchao.net/tutorials/regex/regex.htm ,文中作者写得挺详细的,并且通俗易懂。
总结
以上所述是小编给大家介绍的Java正则相关的Pattern和Matcher类及遇到的坑,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对武林网网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
新闻热点
疑难解答
图片精选