首页 > 其他分享 >正则应用实例常用类和Matcher

正则应用实例常用类和Matcher

时间:2023-05-29 14:03:55浏览次数:35  
标签:String Pattern Matcher content 正则 实例 matcher regStr

1. 应用实例  892

1.1 例1 对字符串进行如下验证

1.汉字

2.邮政编码

要求:是1-9开头的一个六位数.比如: 123890 

3.QQ号码

要求是1-9开头的一个(5位数-10位数)比如: 12389 ,1345687,187698765

4.手机号码

要求:必须以13, 14,15,18开头的11位数,比如13588889999

代码在com.stulzl.regexp10

Regexp10
package com.stulzl.regexp10;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

//正则表达式的应用实例  892
public class Regexp10 {
    public static void main(String[] args) {



        //1.汉字
        //String content = "韩顺平教育";
        //String regStr = "^[\u0391-\uffe5]+$";// \u0391-\uffe5 代表汉字的范围

        //2.邮政编码
        //要求:是1-9开头的一个六位数.比如: 123890
        //String content = "123890";
        //String regStr = "^[1-9]\\d{5}$";

        //3.QQ号码
        //要求是1-9开头的一个(5位数-10位数)比如: 12389 ,1345687,187698765
        //String content = "123890";
        //String regStr = "^[1-9]\\d{4,9}$";

        //4.手机号码
        //要求:必须以13, 14,15,18开头的11位数,比如13588889999
        String content = "13588889999";
        String regStr = "^1[3|4|5|8]\\d{9}$";

        Pattern pattern = Pattern.compile(regStr);
        Matcher matcher = pattern.matcher(content);
        if(matcher.find()){
            System.out.println("满足格式");
        }else{
            System.out.println("不满足格式");
        }
        
    }
}

1.2 例2  URL例题 893

代码在com.stulzl.regexp11

Regexp11
package com.stulzl.regexp11;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

//正则表达式的应用实例  893
//url例题
public class Regexp11 {
    public static void main(String[] args) {
        //String content ="https://www.bilibili.com/video/BV1fh411y7R8?from=search&seid=1831060912083761326";
        String content =
                "http://edu.3dsmax.tech/yg/bilibili/my6652/pc/qg/05-51/" +
                        "index.html#201211-1?track_id=jMc0jn-hm-yHrNfVad37YdhOUh41XY" +
                        "mjlss9zocM26gspY5ArwWuxb4wYWpmh2Q7GzR7doU0wLkViEhUlO1qNtuk" +
                        "yAgake2jG1bTd23lR57XzV83E9bAXWkStcAh4j9Dz7a87ThGlqgdCZ2zpQy" +
                        "33a0SVNMfmJLSNnDzJ71TU68Rc-3PKE7VA3kYzjk4RrKU";
        /**
         * 思路
         * 1. 先确定 url 的开始部分 https:// 或 http://
         * 2.然后通过 ([\\w-]+\\.)+[\\w-]+    例如  匹配 www.bilibili.com
         * 3.匹配(\\/[\\w-?=&/%.#]*)?   /video/BV1fh411y7R8?from=sear…………
         */
        //解释
        //   ^((http|https)://)? 是以http://或者https://开头,共有部分写在括号里 ?是可能有1个也可能没有
        
        //  ([\\w-]+\\.)+[\\w-]+  \\w-代表任意的字母和 - 字符  \\.代表点(\\为了转义)
        // ([\\w-]+\\.)整体代表www. 即 xx字母.  [\\w-]+代表com
        
        // (\\/[\\w-?=&/%.#]*)?   \\/是转义/的意思,[\\w-?=&/%.#]是其中
        // 可能有字母,数字,-,?,=,&,/,%,. ,#等字符,[]外面的*号,是代表可能没有也可能很多(即0-n)
        // ()号外面的?号是com后面这部分可能有1个也可能没有
        
        //注意:[. ? *]中括号里的特殊字符,就表示匹配它本身
        String regStr = "^((http|https)://)?([\\w-]+\\.)+[\\w-]+(\\/[\\w-?=&/%.#]*)?$";

        Pattern pattern = Pattern.compile(regStr);
        Matcher matcher = pattern.matcher(content);
        if(matcher.find()){
            System.out.println("满足格式");
        }else{
            System.out.println("不满足格式");
        }
    }
}

2. 正则表达式三个常用类  894

java.util.regex包主要包括以下三个类Pattern类、Matcher类和PatternSyntaxException(异常)

●Pattern 类

pattern对象是一个正则表达式对象。 Pattern 类没有公共构造方法。要创建一个Pattern对象,调用其公共静态方法,它返回一个Pattern对象。该方法接受一个正则表达式作为它的第个参数, 比如: Patterm r= Pttern.compile(pattern);

●Matcher类

Matcher对象是对输入字符串进行解释和匹配的引擎。与Pattern 类一样, Matcher 也没有公共构造方法。你需要调用Pattern对象的matcher方法来获得一个 Matcher对象

●PatternSyntaxException

PatternSyntaxException是一个非强制异常类, 它表示一个正则表达式模式中的语法错误。

2.1 Pattern类的方法matches 即 整体匹配matches

代码在com.stulzl.regexp12

Regexp12

package com.stulzl.regexp12;

import java.util.regex.Pattern;

// Pattern类的方法matches演示整体匹配   894
//演示matches方法,用于整体匹配,在验证输入的字符串是否满足条件使用  894
public class Regexp12 {
    public static void main(String[] args) {
        String content = "hello abc hello, 韩顺平教育";
        String regStr = "hello.*";//这里的.代表除了\n以外的任意字符,*代表前面的字符可有没有也可以有
        boolean matches = Pattern.matches(regStr, content);
        System.out.println("整体匹配="+matches);

    }
}

2.2 Matcher类  895

代码在com.stulzl.regexp13

MatcherMethod

package com.stulzl.regexp13;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

//Matcher类常用方法  895
public class MatcherMethod {
    public static void main(String[] args) {
        String content = "hello edu jack hspedutom hello smith hello hspedu hspedu";
        String regStr = "hello";
        Pattern pattern = Pattern.compile(regStr);
        Matcher matcher = pattern.matcher(content);
        while (matcher.find()) {
            System.out.println("=================");
            System.out.println(matcher.start());//返回开始匹配的索引
            System.out.println(matcher.end());//返回结束匹配的索引
            //解释substring()方法是截取字符串的功能
            System.out.println("找到:"+content.substring(matcher.start(),matcher.end()));
        }
        //整体匹配,常用与校验某个字符串是否满足某个规则
        System.out.println("整体匹配="+matcher.matches());//false

        //完成如果 content 有 hspedu 替换成 韩顺平教育
        regStr = "hspedu";
        pattern = Pattern.compile(regStr);
        matcher = pattern.matcher(content);
        String newContent = matcher.replaceAll("韩顺平就教育");
        System.out.println("新newContent= "+newContent);
        System.out.println("旧content= "+content);
    }
}

标签:String,Pattern,Matcher,content,正则,实例,matcher,regStr
From: https://blog.51cto.com/u_15784725/6370428

相关文章

  • javascript常用正则表达式
    javascript身份证号验证正则1.//这个可以验证15位和18位的身份证,并且包含生日和校验位的验证。2.//如果有兴趣,还可以加上身份证所在地的验证,就是前6位有些数字合法有些数字不合法。3.4.function5.num=num.toUpperCase();6.//身份证号码为15位或者18......
  • JVM运行时的数据区 (内存溢出实例)
    一、概述运行时数据区是jvm运行时的内存布局,类装载到内存后存放的位置,为执行引擎提供所需指令和数据。运行时数据区包括:堆、栈、方法区、本地方法栈、pc计数器。接下来会详细介绍各个部分,并介绍直接内存访问和方法区中的常量池,另外对于每个区域可能发生的内存异常用demo做讲解。二......
  • mongodb 实例
    packagecom.jaeson.mongodb;importjava.util.ArrayList;importjava.util.List;importorg.bson.Document;importcom.mongodb.Block;importcom.mongodb.MongoClient;importcom.mongodb.MongoCredential;importcom.mongodb.ServerAddress;//importcom.mongod......
  • shell正则匹配捕获引用进行IP匹配
    在服务器上加了一个服务检测机制,用到正则来匹配IP和捕获分组。shell和其他语言一样也可以使用正则分组捕获,不过不能使用$1或1这样的形式来捕获分组,可以通过数组${BASH_REMATCH}来获得,如${BASH_REMATCH[1]},${BASH_REMATCH[N]}简单的测试如下所示:#!/bin/baship="121.0.2.2"if[......
  • 掌握使用类方法、实例方法时的几点注意事项
    packageitheima;publicclassTest{publicstaticvoidmain(String[]args){//掌握使用类方法、实例方法时的几点注意事项//1.类方法中可以直接访问类的成员,不可以直接访问实例成员//2.实例方法中既可以直接访问类成员,也可以直接访问实例......
  • 深入分析:矩阵梯度类实例研究
    写在前面本文主要用于围绕矩阵类求梯度等问题进行证明与分析,由于笔者的数理基础浅薄,下面的证明过程若存在错误,欢迎评论指正。矩阵梯度的通用方法:先将矩阵写成微分形式,\(df=tr(GdX)\),然后得到$\nablaf=G^T$案例1\(\begin{array}{ll}\min_{U}&\dfrac{1}{2}\left\|\boldsymbol{......
  • 正则表达式全部符号解释
    字符描述\将下一个字符标记为一个特殊字符、或一个原义字符、或一个向后引用、或一个八进制转义符。例如,'n'匹配字符"n"。'\n'匹配一个换行符。序列'\\'匹配"\"而"\("则匹配"("。^匹配输入字符串的开始位置。如果设置了RegExp对象的Multiline属性,^也匹配'\n'或......
  • js原型prototype(实例构造函数的属性) __proto__(实例对象的属性) constructor(实例
    functionPerson(name,age){this.name=namethis.age=age}Person.prototype.sayHi=function(){//原型是公共方法解决构造函数new对象公共属性和方法的内存浪费console.log(this.name+'sayhi!!')}constp1=newPerson('aa',12)constp2=new......
  • Web 前端常用正则校验规则
    Web前端常用正则校验规则作为Web前端开发,常用的正则校验规则有很多。下面是一些常见的示例:校验手机号码手机号码的正则表达式可以根据不同国家和地区的手机号码格式进行调整。以下是中国大陆的手机号码正则表达式:constregex=/^1[3456789]\d{9}$/;在这个示例中,正则表......
  • WPF入门实例 WPF完整例子 WPF DEMO WPF学习完整例子 WPF实战例子 WPF sql实例应用 WPF
    WPF和WinForms都是用于创建Windows桌面应用程序的开发框架,它们有一些相似之处,但也有很多不同之处。在开发速度方面,这取决于具体情况。如果您熟悉WinForms开发并且正在开发简单的界面应用程序,则可能会比使用WPF更快速地完成任务。然而,在设计和实现复杂的用户界面时,WPF可......