Java Pattern和Matcher类如何避免正则表达式长尾词匹配错误?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1162个文字,预计阅读时间需要5分钟。
这篇文档记录了我在学习Java正则表达式时遇到的坑和收获。先来说说Matcher类中的三个方法:matches()、find()和group()。
matches():整个匹配,只有当整个字符串序列与正则表达式完全匹配时才返回true。
find():查找匹配,查找整个字符串中是否存在与正则表达式匹配的子串,找到后返回true。
group():分组,用于获取匹配的子串。
此篇文章是记录我在学习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()方法之间。
本文共计1162个文字,预计阅读时间需要5分钟。
这篇文档记录了我在学习Java正则表达式时遇到的坑和收获。先来说说Matcher类中的三个方法:matches()、find()和group()。
matches():整个匹配,只有当整个字符串序列与正则表达式完全匹配时才返回true。
find():查找匹配,查找整个字符串中是否存在与正则表达式匹配的子串,找到后返回true。
group():分组,用于获取匹配的子串。
此篇文章是记录我在学习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()方法之间。

