日期:2022-05-20  浏览次数:4171 次

1
1. 首先要创建一个匹配模式
一个匹配模式就是一个对象,这个对象由Pattern类来帮我们造要注意Pattern的构造方法是私有的,所以没办法直接new,但是可以通过它的一个静态方法compile()来创建。
Pattern里还有一个matcher方法,返回一个Matcher的对象,该方法的参数是一个你想匹配的那个字符串。详细见下文Matcher。
创建一个匹配数字字符的模式:
Pattern pattern = Pattern.compile("\\d+");//创建匹配数字字符的模式
1
匹配模式的意思就是一个模板,用几个符号表示你想匹配的东西,就叫做匹配模式。
        
    例如:
        
    \\d+,代表匹配一个或多个字符,其中‘\d’代表匹配数字,等效于[0-9]。
    
    反斜杠用来转义,因为\d本身有特殊的含义,所以让最前面
    的那个反斜杠将第二个反斜杠变为一个字符'\',这样就可以使\d是一个符号了
    
    ’+‘代表匹配前面的字符或子表达式一次或多次,比如:"wsx+"可以和
    "wsxw"、"wsx"、"swsxx"等等匹配,不可以和"ws"、"sxw"等等匹配
1
2
3
4
5
6
7
8
9
10
11
2. 接下来就是选择匹配的对象(字符串)
我们会用到工具类Matcher,中文就是匹配的意思。

Matcher的一个实例代表一个用来操作匹配字符串的对象。

Matcher常用的方法有find()、start()、end()

    <1> find()用于查找是否有想找的那个字符,有的话返回true
    <2> start()返回上一个匹配项的起始索引
    <3> end()返回上一个匹配项的末尾索引
    
    这三种方法可以与循环结合起来,没有匹配的话它会自动迭代,继续往下找,
直至匹配结束。
1
2
3
4
5
6
7
8
9
10
11
12
3. 接下来就是去执行匹配操作
由于find()返回一个布尔值,所以我们可以把它直接当作while的条件。
下面是一个从字符串中获得数字的一个实例:

String str = "wang123si456xuan789";


//1.创建匹配模式
Pattern pattern = Pattern.compile("\\d+");//匹配一个或多个数字字符

//2.选择匹配对象
Matcher matcher = pattern.matcher(str);
//与谁匹配?与参数字符串str匹配


int count = 0;
while (matcher.find())//matcher.find()用于查找是否有这个字符,有的话返回true
{
      System.out.println("第" + (++count) + "次找到");
      //start()返回上一个匹配项的起始索引
      //end()返回上一个匹配项的末尾索引。
        System.out.println(str.substring(matcher.start(),matcher.end()));