Java 正则表达式

正则表达式是一个强大的字符串处理工具,可以对字符串查找,提取,分割和替换。

String类里有几个特殊的处理方法:

  • boolean matches (String regex): 判断该字符串是否匹配指定的正则表达式regex
  • String replaceAll(String regex,String replacement):将该字符串中所有匹配regex的子字符串替换成replacement
  • String replaceFirst(String regex,String replacement): 将该字符串中第一个匹配regex的子字符串替换成replacement
  • String[] split(String regex): 将字符串以regex为分隔符,分割成多个子字符串
 另外,Java还提供了Matcher和Pattern两个类 专门用于处理正则表达式。

正则表达式支持的合法字符如下:

CharacterExplanation
xx代表任意合法的字符 
\0mnn八进制数0mnn所表示的字符
\xhh十六进制值0xhh所表示的字符
\uhhhh十六进制0xhhhh所表示的Unicode字符
\t制表符(‘ \u0009')
\n换行符(‘\u000A')
\r回车符('\u000D')
\f换页符(‘\u000C')
\a报警符   ('\u0007')
\eEscape符(‘\u001B')
\cxx对应的控制符。例如:\cM 匹配Ctrl-M。x值为A~Z或a~z。

正则表达式中的特殊字符:

Special CharacterDescription
$匹配一行的结尾。如果要匹配字符$本身,则用\$
^匹配一行的开头。如果要匹配字符^本身,则用\^
( )标记子表达式的开始和结束位置
[ ]用于确定中括号表达式的开始和结束位置
{ }用于标记前面子表达式的出现频度
*指定前面子表达式可以出现零次或多次
+指定前面子表达式可以出现一次或多次
指定前面子表达式可以出现零次或一次
.匹配除换行符\n之外的任何单字符
\用于转义下一个字符,或指定八进制  十六进制字符
|指定两项之间任选一项
预定义字符:

Pre-definition characterDescription
.可以匹配任何字符
\d匹配0~9的数字
\D匹配非数字
\s匹配所有的空白字符,包括空格,制表符,回车符,换页符,换行符等
\S匹配所有的非空白字符
\w匹配所有的单词字符,包括0~9所有数字,26个英文字母和下划线
\W匹配所有的非单词字符
方括号表达式:

ExpressionDescription
表示枚举[abc],表示a,b,c中任意一个字符
表示范围:-[a-f],表示a~f范围内的任意字符。范围可以结合枚举使用,如[a-dx-z],表示a~d,x~z范围内的任意字符
表示求否:^例如:[^abc], 表示非a,b,c的任意字符;[^e-h]表示不是e~h的任意字符
表示与:&&[a-z&&[^b-d]],表示a~z范围内除了b~d的字符,即[ae-z]
表示并[a-d[m-o]],表示[a-dm-o]
边界匹配符

Boundary matching characterDescription
^行的开头
$行的结尾
\b单词的边界
\B非单词的边界
\A输入的开头
\G前一个匹配的结尾
\Z输入的结尾,仅用于最后的字符
\z输入的结尾
一旦在程序中定义了正则表达式,就可以用Pattern和Matcher来使用正则表达式。

Pattern p=Pattern.compile("abc");

Matcher matcher=p.matcher("aaaabc");

boolean b=matcher.matches();

 上面定义的Pattern对象可以多次重复使用。如果某个正则表达式仅需要一次使用,则可以直接使用Pattern类的静态matches()方法。

boolean b=Pattern.matches("abc","aaaabc");

Matcher类的常用方法:

find():返回目标字符串中是否包含与Pattern匹配的子串。

group():返回上一次与Pattern匹配的子串。

start():返回上一次与Pattern匹配的子串在目标字符串中的开始位置。

end():返回上一次与Pattern匹配的子串在目标字符串中的结束位置加1.

lookingAt():返回目标字符串前面部分与Pattern是否匹配。

matches():返回整个目标字符串与Pattern是否匹配。

reset():将现有的Matcher对象应用于一个新的字符序列。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值