java中正则表达式总结

.Pattern的用法:
1. javaPattern对象的获取是通过Pattern pattern = Pattern.complile(regex),而不是通过new出来的,因为Pattern的构       造函数是private类型的。Pattern类用于创建一个正则表达式,也可以说是创建一个匹配模式,可以通过两个静态方法创建:compile(String regex)compile(String regex,int flags),其中regex是正则表达式,flags为可选模式( Pattern.CASE_INSENSITIVE 忽略大小写)
Pattern pattern = Pattern.compile("Java");
System.out.println(pattern.pattern());//返回此模式的正则表达式为Java

2.Pattern类还有两个根据匹配模式拆分输入序列的方法:split(CharSequence input) split(CharSequence input, int limit),其中limit为返回元素的个数。
Pattern pattern = Pattern.compile("Java");
String test="123Java456Java789Java";
String[] result = pattern.split(test);
for(String s : result) {
      System.out.println(s);
}
PS:如果查看String类的源码会发现,String中的split函数( 例如: "abc,def".split(',') )本质也是采用的pattern.split(",")
3. Pattern类自带一个静态匹配方法matches(String regex, CharSequence input),但只能进行全字符串匹配并且只能返回是否匹配上的boolean
String test1 = "Java";
String test2 = "Java123456";
System.out.println(Pattern.matches("Java",test1));//返回true
System.out.println(Pattern.matches("Java",test2));//返回false
.Mather的用法:
1.Pattern类中的matcher(CharSequence input)方法会返回一个Matcher对象。 Matcher类提供了对正则表达式的分组支持,以及对正则表达式的多次匹配支持, 要想得到更丰富的正则匹配操作,那就需要将PatternMatcher联合使用。
Pattern pattern = Pattern.compile("Java");
Matcher matcher = pattern.matcher();
2.Matcher类提供了三个返回boolean值的匹配方法:
find可以对任意位置字符串匹配,其中start为起始查找索引值
matches:整个匹配,只有整个字符序列完全匹配成功,才返回True,否则返回False
LookingAt:部分匹配,总是从第一个字符进行匹配,匹配成功了不再继续匹配,匹配失败了,也不继续匹配。
find(index):部分匹配,从当前位置开始匹配,找到一个匹配的子串,将移动下次匹配的位置。
reset:给当前的Matcher对象配上个新的目标,目标是就该方法的参数;如果不给参数,reset会把Matcher设到当前字符串的开始
Pattern pattern = Pattern.compile("Java");
String test1 = "Java";
String test2 = "Java1234";
String test3 = "1234Java";
Matcher matcher = pattern.matcher(test1);
System.out.println(matcher.matches());//返回true
matcher = pattern.matcher(test2);
System.out.println(matcher.matches());//返回false
matcher = pattern.matcher(test2);
System.out.println(matcher.lookingAt())://返回true
matcher = pattern.matcher(test3);
System.out.println(matcher.lookingAt());//返回false
matcher = pattern.matcher(test1);
System.out.println(matcher.find());//返回true
matcher = pattern.matcher(test2);
System.out.println(matcher.find());//返回true
matcher = pattern.matcher(test3);
System.out.println(matcher.find(2));//返回true
matcher = pattern.matcher(test3);
System.out.println(matcher.find(5));//返回false
3.Matcher类提供了start()end()group()分别用于返回字符串的起始索引,结束索引,以及匹配到到的字符串
Pattern pattern = Pattern.compile("Java");
String test = "123Java456";
Matcher matcher = pattern.matcher(test);
matcher.find();//必须有find函数
System.out.println(matcher.start());//返回3
System.out.println(matcher.end());//返回7
System.out.println(matcher.group());//返回Java
4.Matcher类提供了start(int gropu)end(int group)group(int i)groupCount()用于分组操作
Pattern pattern = Pattern.compile("(Java)(Python)");
String test = "123JavaPython456";
Matcher matcher = pattern.matcher(test);
matcher.find();
System.out.println(matcher.groupCount());//返回2
System.out.println(matcher.group(1));//返回第一组匹配到的字符串"Java",注意起始索引是1 System.out.println(matcher.start(1));//返回3,第一组起始索引
System.out.println(matcher.end(1));//返回7 第一组结束索引
System.out.println(matcher.group(2));//返回第二组匹配到的字符串"Python"
System.out.println(matcher.start(2));//
返回7,第二组起始索引
System.out.println(matcher.end(2));//返回13 第二组结束索引
5.Matcher类还提供region(int start, int end)(不包括end)方法用于设定查找范围
Pattern pattern = Pattern.compile("Java");
String test = "123JavaJava";
Matcher matcher = pattern.matcher(test);
matcher.region(7, 11);
System.out.println(matcher.regionStart());//返回7
System.out.println(matcher.regionEnd());//返回11
matcher.find();
System.out.println(matcher.group());//返回Java6.Matcher类提供了两种用于重置当前匹配器的方法:reset()reset(CharSequence input)
Pattern pattern = Pattern.compile("Java");
String test = "Java";
Matcher matcher = pattern.matcher(test);
matcher.find();
System.out.println(matcher.group());//返回Java
matcher.reset();//
从起始位置重新匹配
matcher.find();
System.out.println(matcher.group());//返回Java
matcher.reset("Python");//重新定义输入
System.out.println(matcher.find());//返回false
7.最后说一下Matcher类的匹配方法:replaceAll(String replacement) replaceFirst(String replacement),其中replaceAll是替换全部匹配到的字符串,而replaceFirst仅仅是替换第一个匹配到的字符串。
Pattern pattern = Pattern.compile("Java");
String test = "JavaJava";
Matcher matcher = pattern.matcher(test);
System.out.println(matcher.replaceAll("Python"));//返回PythonPython 
System.out.println(matcher.replaceFirst("python"));//
返回PythonJava

 


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值