正则表达式——find和lookingAt
Posted stujike
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正则表达式——find和lookingAt相关的知识,希望对你有一定的参考价值。
1、最基本的matches()方法
1 package com.wy.regular; 2 3 import java.util.regex.Matcher; 4 import java.util.regex.Pattern; 5 6 public class RegularTest { 7 8 public static void main(String[] args) { 9 /** 10 * marcher的 find()方法、lookingAt()方法和reset()方法 11 */ 12 Pattern pattern = Pattern.compile("\d{3,5}"); 13 String str = "123-45678-963-00"; 14 Matcher matcher = pattern.matcher(str); 15 // matches()方法匹配的是整个字符串 16 pri(matcher.matches());//false 17 } 18 19 public static void pri(Object object){ 20 System.out.println(object); 21 } 22 }
2、find()方法
1 package com.wy.regular; 2 3 import java.util.regex.Matcher; 4 import java.util.regex.Pattern; 5 6 public class RegularTest { 7 8 public static void main(String[] args) { 9 /** 10 * marcher的 find()方法、lookingAt()方法和reset()方法 11 */ 12 Pattern pattern = Pattern.compile("\d{3,5}"); 13 String str = "123-45678-963-00"; 14 Matcher matcher = pattern.matcher(str); 15 // find()方法是找子串 16 pri(matcher.find());// true 找到的是123,然后整个正则表达式引擎会把123去掉。 17 pri(matcher.find());// true 18 pri(matcher.find());// true 19 pri(matcher.find());// false 20 } 21 22 public static void pri(Object object){ 23 System.out.println(object); 24 } 25 }
3、matches()方法和find()方法
1 package com.wy.regular; 2 3 import java.util.regex.Matcher; 4 import java.util.regex.Pattern; 5 6 public class RegularTest { 7 8 public static void main(String[] args) { 9 /** 10 * marcher的 find()方法、lookingAt()方法和reset()方法 11 */ 12 Pattern pattern = Pattern.compile("\d{3,5}"); 13 String str = "123-45678-963-00"; 14 Matcher matcher = pattern.matcher(str); 15 pri(matcher.matches());//false,分析到-这个字符,引擎把123-去掉了 16 // find()方法是找子串 17 pri(matcher.find());// true 找到的是45678,然后整个正则表达式引擎会把45678-去掉。 18 pri(matcher.find());// true 找到的是963,去掉的是963- 19 pri(matcher.find());// false 20 pri(matcher.find());// false 21 } 22 23 public static void pri(Object object){ 24 System.out.println(object); 25 } 26 }
4、添加reset()方法
1 package com.wy.regular; 2 3 import java.util.regex.Matcher; 4 import java.util.regex.Pattern; 5 6 public class RegularTest { 7 8 public static void main(String[] args) { 9 /** 10 * marcher的 find()方法、lookingAt()方法和reset()方法 11 */ 12 Pattern pattern = Pattern.compile("\d{3,5}"); 13 String str = "123-45678-963-00"; 14 Matcher matcher = pattern.matcher(str); 15 pri(matcher.matches());//false,分析到-这个字符,引擎把123-去掉了 16 // find()方法是找子串 17 matcher.reset();// 字符串恢复到原来的状态 18 pri(matcher.find());// true 找到的是123,然后整个正则表达式引擎会把123-去掉。 19 pri(matcher.find());// true 找到的是45678,去掉的是45678- 20 pri(matcher.find());// true 找到的是963 21 pri(matcher.find());// false 22 } 23 24 public static void pri(Object object){ 25 System.out.println(object); 26 } 27 }
5、lookingAt()方法
1 package com.wy.regular; 2 3 import java.util.regex.Matcher; 4 import java.util.regex.Pattern; 5 6 public class RegularTest { 7 8 public static void main(String[] args) { 9 /** 10 * marcher的 find()方法、lookingAt()方法和reset()方法 11 */ 12 Pattern pattern = Pattern.compile("\d{3,5}"); 13 String str = "123-45678-963-00"; 14 Matcher matcher = pattern.matcher(str); 15 // lookingAt()从开始的位置查找分析 16 pri(matcher.lookingAt());// true 123 17 pri(matcher.lookingAt());// true 123 18 pri(matcher.lookingAt());// true 123 19 pri(matcher.lookingAt());// true 123 20 } 21 22 public static void pri(Object object){ 23 System.out.println(object); 24 } 25 }
6、起始位置和结束位置(start()和end())
1 package com.wy.regular; 2 3 import java.util.regex.Matcher; 4 import java.util.regex.Pattern; 5 6 public class RegularTest { 7 8 public static void main(String[] args) { 9 /** 10 * marcher的 find()方法、lookingAt()方法和reset()方法 11 */ 12 Pattern pattern = Pattern.compile("\d{3,5}"); 13 String str = "123-45678-963-00"; 14 Matcher matcher = pattern.matcher(str); 15 pri(matcher.matches());// false 16 matcher.reset(); 17 pri(matcher.find());// true 123 18 pri(matcher.start() + "-" + matcher.end());// 0-3 123- 19 20 pri(matcher.find());// true 45678 21 pri(matcher.start() + "-" + matcher.end());// 4-9 45678- 22 23 pri(matcher.find());// true 963 24 pri(matcher.start() + "-" + matcher.end());// 10-13 963- 25 26 pri(matcher.find());// false 27 //pri(matcher.start() + "-" + matcher.end());// 会报错,起始和结束必须能找到 28 } 29 30 public static void pri(Object object){ 31 System.out.println(object); 32 } 33 }
以上是关于正则表达式——find和lookingAt的主要内容,如果未能解决你的问题,请参考以下文章