一个正则表达式含有一些具有特殊意义字符的字符串,这些特殊字符称做正则表达式中的元字符


比如:"\\dcat"中的d就是有特殊意义的元字符,代表0到9中的任何一个。

字符串"Ocat","1cat","2cat",…,"9cat"都是和正则表达式"\\dcat"匹配的字符串。


字符串对象调用public boolean matches(String regex)方法可以判断当前字符串对象是否和参数regex指定的正则表达式匹配。


常用的元字符如下:

元字符在正则表达式中的写法意义
..代表任何一个字符
\d\\d代表0-9任何一个数字
\D\\D代表任何一个非数字字符
\s\\s代表空格类字符,‘\t’、‘\n’、‘\x0B’、‘\f’、‘\r’
\S\\S代表非空格类字符
\w\\w代表可用于标识符的字符(不包括美元符号)
\W\\W代表不能用于标识符的字符
\p{Lower}\\p{Lower}小写字母[a-z]
\p{Upper}\\p{Upper}大写字母[A-Z]
\p{ASCⅡ}\\p{ASCⅡ}ASCⅡ字符
\p{Alpha}\\p{Alpha}字母
\p{Digit}\\p{Digit}数字字符[0-9]
\p{Alnum}\\p{Alnum}字母或数字
\p{Punct}\\p{Punct}标点符号
\p{Graph}\\p{Graph}可视字符
\p{Print}\\p{Print}可打印字符
\p{Blank}\\p{Blank}空格或制表符[\t]
\p{Cntrl}\\p{Cntrl}控制字符


在正则表达式中可以用方括号括起若干个字符来表示一个元字符,该元字符代表方括号中的任何一个字符,例如:

regex = "[159]ABC";

那么,"1ABC"、"5ABC"和"9ABC"都是和正则表达式regex匹配的字符串。


例如:

[abc]代表a、b、c中的任何一个。

[^abc]代表除了a、b、c以外的任何字符。

[a-zA-Z]代表英文字母(包括大写和小写)中的任何一个。

[a-d]代表a至d中的任何一个。


另外,中括号里允许嵌套中括号,可以进行并、交、差运算,例如:

[a-d[m-p]]代表a至d或m至p中的任何字符(并)。

[a-z&&[def]]代表d、e、或f中的任何一个(交)。

[a-f&&[^bc]]代表a、d、e、f(差)。


注意:由于“.”代表任何一个字符,所以在正则表达式中如果想使用普通意义的点字符,必须使用[.]或用\56表示普通意义的点字符。


在正则表达式中可以使用限定修饰符。

举个例子,对于限定修饰符?,如果X代表正则表达式中的一个元字符或普通字符,那么X?就表示X出现0次或1次,例如:

regex = "hel1o[2468]?";

那么,"hello","hello2","hello4","hello6"和"hello8"都是与正则表达式regex匹配的字符串。


常用的限定修饰符的用法如下:

限定修饰符意义
X?X出现0次或1次
X*X出现0次或多次
X+X出现1次或多次
X{n}X恰好出现n次
X{n,}X至少出现n次
X{n,m}X出现n次至m次
XYX的后缀是Y
X|YX或Y


例如:

regex = "@\\w{4}";

那么,"@abcd"、"@Java"、"@知行合一"都是与正则表达式regex匹配的字符串。


注意有关正则表达式的细节可以去java.util.regex包中查阅Pattern类。


点赞(0)

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

Dotcpp在线编译      (登录可减少运行等待时间)