正则表达式

第十一章 正则表达式


正则表达式:符合一定规则的表达式

作用:用于专门操作字符串。

1、java.util.regex包中的类
public final class java.util.regex.Pattern
该类的构造器是私有的,既不能被继承,也不能用new的方式建立一个Pattern对象
用String写字符串,而后需要将该String编译为该类的实例
用到方法:static Pattern compile(String string),该方法返回一个Pattern(模式)
可用这个Pattern创建一个Matches对象,用方法:Matcher matcher(CharSequence input)
CharSequence是一个接口,String实现了该接口,这里输入input
多个匹配器可以共享同一个模式
该方法将字符串编译成为一种模式,并返回这种模式
经典的调用顺序:
Pattern p = Pattern.compile("dasfas");
Matcher m = p.matcher("C:\\test.txt");//此处为多态,CharSequence对象指向了String实例
boolean b = m.matches();
如果该模式只是用一次可以用一下方式简写:
boolean b = Pattern.matches("dasff","C:\\test.txt");

2、String类中使用正则表达是的方法:
String replaceAll(String regex, String replacement)
str.replaceAll(regx, repl)等价于:
Pattern.compile(regx).matcher(str).replaceAll(repl)
regx是规则表达式(表示要替换的内容),str是待替换的目标,repl是要替换成的内容
String replaceFirst(String regex, String replacement)
使用给定的 replacement 替换此字符串匹配给定的正则表达式的第一个子字符串。 
String[] split(String regx)
String[] split(String regx, int limit)
limit限制分割后的String[]的长度,当达到该长度后后面的内容不再split直接作为一个字符串存储在该String[]中

3、正则表达式的语法:
3.1 预定义字符类:
. 任何字符
\d 数字
\D 非数字
\s 空白字符[\t\n\x0B\f\r]
\S 非空白字符
\w 单词字符[a-zA-Z_0-9]
\W 非单词字符
3.2 边界匹配器
^ 行的开头
$ 行的结尾
\b 单词边界\b(abc)表示单词的开始或结束包含abc
\B 非单词边界\B(abc)表示单词的中间包含abc
\A 输入的开头
\G 上一个匹配的结尾,例如\\Gdog表示在上一个匹配结尾处查找dog如果没有的话则从开头查找,注意如果开头不是dog则不能匹配。
\Z 输入的结尾
3.3 Greedy数量词
X? X,一次或一次也没有(0-1次)
X* X,零次或多次(>0次)
X+ X,一次或多次(>1次)
X{n} X,恰好n次
X{n,} X,至少n次
X{n,m} X,n-m次
3.4 Reluctant 数量词
X??    X,一次或一次也没有
X*?    X,零次或多次
X+?    X,一次或多次
X{n}?    X,恰好 n 次
X{n,}?    X,至少 n 次
X{n,m}?    X,至少 n 次,但是不超过 m 次
在进行模糊匹配时,greedy第一次就读入整个被模糊匹配的字符串。如果第一个匹配尝试(整个输入字符串)失败,匹配器就会在被匹配字符串中的最后一位后退 一个字符并且再次尝试,重复这个过程,直到找到匹配或者没有更多剩下的字符可以后退为止。
如:.{3-10}[0-9],greedy先匹配10个而后逐个递减,知道match或者减到3个仍没有结果
除此之外还有Reluctant,Possessive
Greedy 递减
Reluctant 递增
Possessive 仅查询一次,匹配最大长度
3.5 Logical运算符
XY X后面是Y
X|Y X或Y
(X) X,作为捕捉组
Back引用
\n n表示具体的数字
如:(ab)34(cd)\1\2表示:ab34abcd
举例7:表达式 "¥(\\d+\\.?\\d*)" 在匹配 "$10.9,¥20.5" 时,匹配的结果是:成功;匹配到的内容是:"¥20.5"
正则表达式认识\d, \.
但\在字符串中也有特殊意义,因此要加一个\,以保证\d和\.能够传递到正则表达式。





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值