正则表达式
定义:正则表达式是String对象的实体,但其包含正则表达式中的元字符(不知道String是一个类的朋友,可以看我之前发的文章 链接: Java中String类的引用和实体相关内容)
基础方法(函数):boolean matches(String regex)
判断当前String对象的实体是否和regex指定的正则表达式匹配
用途:显而易见,主要用来判断字符串内容是不是和自己想的一样,如:regex=“hh\d”,"\d"作为元字符的意思是0-9任何一个数字,那么"hh1"和"hh2"都是与正则表达式regex匹配的
String regex="hh\\d";
String a="hh1";
String b="hh2";
if(a.matches(regex))
if(b.matches(regex))
上面两个if中的判断结果都是true
常见元字符
在正则表达式中的写法 | 意义 |
---|---|
\\. | 代表.字符 |
. | 代表任何一个字符 |
\\d | 代表0~9中的任何一个数字 |
\\D | 代表任何一个非数字字符 |
\\s | 代表空格类字符,如:‘\t’、‘\n’、‘\x0B’、‘\f’、‘\r’ |
\\S | 代表非空格类字符 |
\\w | 代表可用于标识符的字符(不包括美元符号和非ASCII码字符) |
\\W (大写W) | 代表不能用于标识符的字符 |
\\p{Lower} | 小写字母a~z |
\\p{Upper} | 大写字母A~Z |
\\p{ASCII} | ASCII码字符 |
\\p{Alpha} | 字母 |
\\p{Digit} | 数字字符,0~9 |
\\p{Alnum} | 字母或数字 |
\\p{Punct} | 标点符号:!、"、#、$、%、&、'、(、)、*、+、,、-、.、/、:、;、<、=、>、?、@、[、\、]、^、_、`、{、|、}、~、 |
\\p{Graph} | 可视字符:\p{Alnum} 、\p{Punct} |
\\p{Print} | 可打印字符:\p{Print} |
\\p{Blank} | 空格或制表符:\t |
\\p{Cntrl} | 控制字符:[\x00-\x1F\x7F] |
[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(差)
正则表达式中可以使用限定修饰符
下表中的"X"指正则表达式中的一个字符,包括元字符;如果想让限定修饰符作用在更多的字符上,可以用"()"将更多的字符括起来,如:
String regex="(wt){4}"
String a="wtwtwtwt"
if(a.matches(regex))
由于限定修饰符{n}代表出现n次,所以上面if 中的结果就是true了
带限定修饰符的模式 | 意义 |
---|---|
X? | X出现0次或1次 |
X* | X出现0次或多次 |
X+ | X出现1次或多次 |
X{n} | X恰好出现n次 |
X{n,} | X至少出现n次 |
X{n,m} | X出现n次至m次 |
XY | X的后缀是Y |
X|Y | X或Y |
例如:regex="@\\w{4}"
,那么"@abcd"“@天道酬勤”“@Java"和”@bird"都是与之匹配的
常用正则表达式
作用 | 正则表达式 |
---|---|
匹配整数 | string regex="-?[1-9]\\d*" |
匹配E-mail | "\\w+@\\w+\\.[a-z]+(\\.[a-z]+)?" |
身份证号 | [1-9][0-9]{16}[a-zA-Z0-9]{1} |
相关方法
- 基础方法:
boolean matches(String regex)
判断当前String对象的实体是否和regex指定的正则表达式匹配 String replaceAll(String regex,String replacement)
把当前String对象的实体中所有和regex匹配的子字符序列用参数replacement替换掉,返回一个新的String对象String[] split(String regex)
将正则表达式regex作为分隔标记分解出当前String对象的实体中的单词,并存放在String数组中- 和StringTokenizer或者Scanner配合使用,分解出字符串中的单词。( 链接: Scanner类和StringTokenizer类解析字符序列中的单词)
- 和Pattern类以及Matcher类配合使用,进行模式匹配(大家可以看一下这一篇文章:链接: Java中的模式匹配)
大家如果发现错误和遗漏可以发在评论区
创作不易,大家点赞支持一下吧