您的位置 首页 java

Java正则相关的Pattern和Matcher类及遇到的坑

这篇文章主要介绍了 java 正则相关的 Pattern 和Matcher类及遇到的坑,本文给大家提到了Matcher 里面的三个方法,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下

Java正则相关的Pattern和Matcher类及遇到的坑

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

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

好了上测试代码:

Java正则相关的Pattern和Matcher类及遇到的坑

输出结果:

Java正则相关的Pattern和Matcher类及遇到的坑

小结:正则表达式本身并不难,平常使用的时候只要按照规则来写就好了。在学习中理解matches、find、和lookingAt三个方法花了我比较长的时间,一直不能理解完全匹配和部分匹配是什么意思,最后还是在stackoverflow上找到了想要的答案。

以上是个人学习的理解,有不对之处,希望给予指点。

(补充:正则表达式Pattern如果调用多次容易出问题,比如内存溢出,因为Pattern每执行一次就编译一次正则表达式,因此建议将需要的正则表达式进行预编译。)

总结

以上所述是小编给大家介绍的Java正则相关的Pattern和Matcher类及遇到的坑,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。


作者:jejaywong

来源:脚本之家

文章来源:智云一二三科技

文章标题:Java正则相关的Pattern和Matcher类及遇到的坑

文章地址:https://www.zhihuclub.com/182741.shtml

关于作者: 智云科技

热门文章

网站地图