Dotcpp  >  编程教程  >  Java常用实用类  >  Java正则表达式

Java正则表达式

点击打开在线编译器,边学边练

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


比如:"\\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类。



本文固定URL:https://www.dotcpp.com/course/829

Java教程
第一章 Java入门
第二章 Java运算符和表达式
第三章 Java流程控制
第四章 Java类和对象
第五章 Java子类与继承
第六章 Java接口与实现
第七章 Java内部类与异常类
第八章 Java常用实用类
第九章 Java输入输出流
第十章 Java数组
Dotcpp在线编译      (登录可减少运行等待时间)