Java正则表达式的使用

正则表达式

正则表达式是一个强大的字符串处理工具,可以对字符串进行查找、提取、替换等操作。String类里也提供了如下几个特殊的方法。

- boolean matches(String regex):判断字符串是否匹配指定的正则表达式。
- String replaceAll(String regex,String replacement):将该字符串中所有regex的子串替换成replacement。
- String replaceFirst(String regex,String replacement):将改字符串中的一个regex的子串替换成replacement。
- String [] split(String regex);以regex作为分隔符,把该字符串分割成多个子串。

上面这些特殊的方法都依赖于Java提供的正则表达式支持,除此之外Java还提供了Pattern和Matcher两个类专门用于提供正则表达式支持。

正则表达式的匹配规则如下

 

特殊字符说明
$匹配一行的结尾。要匹配$字符本身,请使用\$
^匹配一行的开头。要匹配^字符本身,请使用\^
()标记子表达式的开始和结束位置。要匹配这些字符,请使用\(和\)
[]用于确定中括号表达式的开始和结束位置。
{}用于标记前面子表达式的出现频度。
*指定前面子表达式可以出现零次或多次
+指定前面表达式可以出现一次或多次
指定前面子表达式可以出现零次或一次。
.匹配除换行符\n之外的任何单字符。
\用于转义\n之外的任何单字符。
|用于指定两项之间任选一项。
预定义字符说明
.可以匹配任何字符
\d可以匹配0~9所有数字 digit(数字)
\D匹配非数字
\s匹配所有的空白字符,包括空格、制表符、回车符、换页符、换行符等 space(空格)
\S匹配所有的非空白字符
\w匹配所有的单词字符,包括0~9所有数字、26个英文字符和下划线 word(单词)
\W匹配所有的非单词字符
方括号表达式说明
表示枚举例如[abc],表示a、b、c其中任意一个字符;[gz]表示g、z其中任意一个字符
表示范围例如[a-f]表示a~f范围内的任意字符串
表示“与”运算:&&例如[a-z&&[def]]表示a~z和[def]的交集,表示d、e或f
表示否^例如[^abc]表示非a、b、c的任意字符
表示“并”运算并运算与前面的枚举类似。例如[a-d[m-p]],表示[a-dm-p]

正则表达式在模式串匹配中的只要有三种匹配方式:

  • 贪婪模式:数量表示符默认采用贪婪模式,除非另有表示。贪婪模式的表达式会一直匹配下去,直到无法匹配位置。如果你发现表达式匹配的结果与预期的不符,很有可能是因为----你以为表达式只会匹配前面几个字符,而实际上它是贪婪模式,所以会一直匹配下去。

  • 勉强模式:用问号后缀(?)表示,它只会匹配最少的字符。也称为最小匹配模式。

  • 占有模式:用加号后缀(+)表示,目前只有java支持占有模式,通常比较少用。

贪婪模式勉强模式占用模式说明
X?X??X?+X表达式出现零次或一次
X*X*?X*+X表达式出现零次或多次
X+X+?X++X表达式出现零次或一次
X{n}X{n}?X++X表达式出现n次
X{n,}X{n,}?X{n,}+X表达式至少出现n次
X{n,m}X{n,m}?X{n,m}+X表达式至少出现n次,最多出现m次
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值