澳门百老汇游戏 服务器常用软件

澳门百老汇游戏报道Java正则相关的Pattern和Matcher类及遇到的坑_澳门百老汇游戏官网资讯

 更新时间:2019年09月09日 10:58:39   作者:jejaywong   我要议论
这篇文章主要介绍了Java正则相关的Pattern和Matcher类及遇到的坑,本文给大家提到了Matcher 里面的三个方法,本文通过实例代码给大家介绍的非常详细,具有肯定的参考借鉴价值,需要的朋友能够参考下

此篇文章是记载我在学习Java正则表示式时刻学到的和遇到的坑。

先来说说 Matcher 里面的三个方法(取的结果以group()方法为例子)

  • matches():整个匹配,只有整个字符序列完全匹配胜利,才返回True,否则返回False。但如果前局部匹配胜利,将移动下次匹配的身分。举个例子如果字符串为"a123",正则表示式为"\w\d\d\d",则matches()方法才返回true,换言之,就是要匹配的字符串需要跟正则表示式一一对应,字母对应字母,数字对应数字,所以称之为完全匹配,错一位都不可。(这里的了解花了我好长时间,网上搜到的都没有提及,也许是我了解能力不够)
  • find():局部匹配,从当前身分开头匹配,找到一个匹配的子串,将移动下次匹配的身分。“find()像迭代器那样向前遍历输入字符串。” --摘自《Java编程思想。看下面的例子中的find()方法,要匹配的字符串为"a123b",正则表示式为"\d\d\d",而最后输出结果为:123,所以称之为局部匹配,只要有,就返回true。
  • lookingAt():局部匹配,总是从第一个字符进行匹配,匹配胜利了不再继续匹配,匹配失败了,也不继续匹配。lookingAt()方法介于matches()和find()方法之间。lookingAt()方法的局部匹配指从第一位开头匹配如果第一位没有匹配到,就不再匹配,直接返回false,如果第一位匹配到了,则匹配第二位,以此类推。例子:要匹配的字符串为"a123b",正则表示式为"\w\d\d",输出结果为"a12",很好了解,就是一位一位地匹配,匹配到了就匹配下一位。"\w\d\d"这个正则正好代替"字母数字数字",所以正好输出结果为a12。

好了上测验代码:

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类及遇到的坑,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对澳门百老汇游戏网站的撑腰!
如果你以为本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

  • java
  • 正则
  • Pattern
  • Matcher

相关文章

最新议论

微信 皇家赌场娱乐场 投诉建议 在线工具
条评论