Java基础 - Java中的正则表达式

本文详细介绍了正则表达式的各种元素及其用法,包括基本字符、通配符、字符集合、子表达式及频度等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  正则表达式是对字符串的强大的处理工具,可以对字符串进行查找、提取、分割、替换操作。所谓正则表达式,可以把他看成匹配字符串的模板。


一、正则表达式中允许使用的字符

字符解释
x任意合法字符x
\0xxx8进制表示法表示的字符
\xhh16进制表示法表示的字符
\uhhhh16进制表示的Unicode字符
\t制表符
\n换行符
\r回车符
\f换页符
\a报警符
\eEscape符
\cxx对应的控制符。如\cM匹配Ctrl-M。x值必须A-Z或者a-z

还有一些特殊的符号

字符解释
$匹配一行的结尾
^匹配一行的开头
()子表达式
[]子表达式,匹配集合
{}匹配前面子表达式的频度
*指定前面表达式出现0次或者多次
+指定前面表达式出现1次或者多次
?指定前面表达式出现0次或者多次
.匹配除了\n以外的任何单字符
\转义用
|指定两项之间的任何一项

以上这些就只可以直接出现在正则表达式中的字符。

例子:
"\u0041\\\\"  //用于匹配"A\\" 即 A\
"\\?\\["  //用于匹配"\?\[" 即 ?[

二、正则表达式中的通配符

  以上的例子都只是单个字符匹配,如果说要任意一个字母匹配都可以,那就不能用上面例子这种写法,通配符很好解决这个问题。
预定义字符(即“通配符”)

预定义字符解释
.匹配任意字符
\d匹配0-9的任意数字
\D匹配非数字
\s匹配所有空白字符,包括空格、\t、\r、\n、\f等
\S匹配所有非空白字符
\w匹配所有的单词字符,包括0-9,26个字母,下划线(_)
\W匹配所有非单词字符
例子:
"\\d\\d\\d-\\d\\d\\d-\\d\\d\\d\\d"  //匹配如 000-000-0000形式的电话号码

三、字符集合

  []就是做匹配集合,只要符合[]内的表达式,就可以被匹配。
表达式可用的符号

符号解释
x任意单词字符,如[abc],表示匹配a、b、c中任意一个
-表示范围,如[a-c],表示a到c的任意一个,a、b、c
^表示非,如[^a-c],表示除a、b、c外的任意一个
&&表达式1&&表达式2,表示表达式1与2的交集

四、子表达式

  ()表达式很有意思,用于匹配,如果表达式搭配其他符号意义就不一样了。

符号解释
(XXX)匹配XXX
(?:XXX)这个表达式使用 | 来匹配,如“industr(?:y|ies)”就是一个匹配“industry”或者“industries”更简略的表达式
(?=XXX)执行正向预测先行搜索的子表达式,该表达式匹配处于匹配 XXX 的字符串的起始点的字符串。例如,’Windows (?=95|98|NT|2000)’ 匹配”Windows 2000”中的”Windows”,但不匹配”Windows 3.1”中的”Windows”
(?!XXX)与(?=XXX)相反

五、频度

  频度使用的是{}

符号解释
{n}正好匹配n次
{n,}最少匹配n次
{n,m}n <= m, 至少匹配n次,至多匹配m次
例子:
"fooooood"  //如果是split的话,结果就是 "f" "" "d"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值