Java中的基本正则知识:
注:标准的正则表达式是\s,\S,\d,\D,\w,\W这样的;但是在java中,要使用\\来表示\。
|
符号 |
含义 |
|
\\s |
匹配一个空白字符 |
|
\\S |
匹配任意一个非空白字符 |
|
\\d |
匹配一个[0,9]之间的任意一个整数,等价于[0-9] |
|
\\D |
匹配一个[0,9]之外的任意一个字符,等价于[^0-9] |
|
\\w |
匹配一个数字或下划线或字母字符,等价于[A-Za-z0-9_] |
|
\\W |
匹配一个非数字、非下划线、非字母字符,等价于[^A-Za-z0-9_] |
|
. |
匹配一个除了换行符之外的任意字符 |
|
\\. |
防转义,匹配 . |
|
{n} |
前面那个字符在这里一共有n个(包括那个字符在内) |
|
{n,} |
前面那个字符在这里一共有>=n个(包括那个字符在内) |
|
{n,m} |
前面那个字符在这里一共有>=n且<=m个(包括那个字符在内) |
|
* |
前面那个字符在这里一共有>=0个(包括那个字符在内),等价于{0,} |
|
+ |
前面那个字符在这里一共有>=1个(包括那个字符在内),等价于{1,} |
|
? |
前面那个字符在这里只有0个或1个(包括那个字符在内),等价于{0,1} |
Pattern类与Matcher类:
java正则表达式通过java.util.regex包下的Pattern类与Matcher类实现。
◎Pattern类
Pattern类用于创建一个正则表达式(即:创建一个匹配模式);它的构造方法是私有的,不可以直接创建,Pattern的私有构造为:
但我们可以通过Pattern的公有静态方法来获取Pattern的实例
◎Matcher类
Matcher类的构造方法是默认级别的,不能随意创建,可以通过Pattern.matcher(CharSequence input)方法得到该类的实例。Pattern类只能做一些简单的匹配操作,要想得到更强更便捷的正则匹配操作,那就需要将Pattern与Matcher一起合作
Pattern.complie(String regex)简单工厂方法(如上图所示)用于创建一个Pattern正则表达式。
示例:
Pattern实例.pattern()用于返回正则表达式的字符串形式
即:返回Pattern.complile(String regex)的参数regex
示例:
注:在java中,使用正则占位符时,使用\\来表示\。
这是因为:在java中\有其他的意义,如\t,\n,\r等,与标准的正则有冲突,所以在java中写时要写\\,但是结果会被转译为\,如:
Pattern实例.split(CharSequence cs)用于分隔字符串,并返回一个String[]。
注:CharSequence是一个接口,String、StringBuffer和StringBuilder都实现并"多态了"该CharSequence接口。
示例:
Pattern.matcher(String regex,CharSequence cs)用于验证cs是否完全满足正则表达式(当cs完全满足regex时,返回true;否则返回false)
示例:
Pattern.matcher(CharSequence input)用于返回一个Matcher对象。
示例:
即:
Matcher实例.pattern()用于返回正则regex字符串
示例:
Matcher实例.matches()用于验证cs是否完全满足正则表达式(当cs完全满足regex时,返回true;否则返回false)
注:Matcher实例.matches()和Pattern.matcher(String regex,CharSequence cs)功能一样
示例:
Matcher实例.lookingAt()用于验证cs前面的内容是否满足正则表达式(当cs前面的内容满足regex时,返回true;否则返回false)
示例:
Matcher实例.find()当cs中有任何内容满足正则表达式reg时,返回true,否则返false
示例:
Matcher实例.start()返回匹配到的子字符串(第一个字符)在字符串中的索引位置(从0开始).
Matcher实例.end()返回匹配到的子字符串的最后一个字符在字符串中的索引位置(从1开始).
Matcher实例.group()返回匹配到的子字符串
注:以上三个方法使用时机一般为:在使用matches(),lookingAt(),find()执行匹配操作返回true
示例:
参考自http://www.kaiyuanba.cn/html/1/131/138/7609.htm
如有不当之处,欢迎指正
本文已经被收录进《程序员成长笔记(二)》,作者JustryDeng