正则表达式——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的主要内容,如果未能解决你的问题,请参考以下文章

Java中正则Matcher类的matches()lookAt()和find()的差别

Java正则表达式

JAVA正则表达式怎么匹配所有符合要求的子字符串

Java中正则Matcher类的matches()…

jquery.find()无法识别的正则表达式[重复]

通过 Java 正则表达式提取 semver 版本字符串的片段