zoukankan      html  css  js  c++  java
  • 正则表达式知识

    正则表达式。
    正则表达式用于操作字符串数据。
    通过一些特定的符号来体现的。
    要掌握正则表达式,必须学习一些符号。
    例:"[1-9][0-9]{4,14}"表示第一个字符是1-9任意一个数字,4-14个字符是0-9的数字只能有5-15个字符。
    虽然简化,但是阅读性差。
    1,匹配:
        使用的就是String类中的matches方法。
    2,切割:
        使用的就是String类中的split方法。
    3,替换:
        使用的就是String类中的replaceAll();方法
    4,获取:

    基础用法:
        字符:
            x:表示准确字符x
            \反斜杠字符 转义字符
             换行符
             回车符
        字符类:
            [abc] a、b或c
            [^abc] 除了a、b和c
            [a-zA-Z]a到 z或 A 到Z的字母
            [0-9]0到9的字符
        预定义字符类:
            .任意字符 输入.用.
            d 数字[0-9]
            w 单词字符[a-zA-Z0-9]
        边界匹配器:
            ^ 行的开头
            $ 行的结尾
             单词边界
        Greedy 数量词
            X? X,一次或一次也没有
            X* X,零次或多次
            X+ X,一次或多次
            X{n} X,恰好 n 次
            X{n,} X,至少 n 次
            X{n,m} X,至少 n 次,但是不超过 m 次

    代码举例:

    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    
    
    public class RegexDemo {
    	public static void main(String[] args) {
    		functionDemo_4();
    	}
    /*
     * 获取:
     *  将正则规则对象的封装。
     *  Pattern p=Pattern.complie("a*b");
     *  //通过正则对象的matcher方法字符串相关联。获取要对字符串操作的匹配器对象Matcher.
     *  Matcher m=p.matcher("aaaab");
     *  //通过Matcher匹配器对象的方法对字符串进行操作。
     *  boolean b=m.matches();
     */
    	public static void functionDemo_4() {
    		String str="ni hao,jie xia lai gai zen me zuo ne memeda";
    		String regex="\b[a-z]{3}\b";
    		
    		//1,将正则封装成对象
    		Pattern p=Pattern.compile(regex);
    		//2,通过正则对象获取匹配器对象
    		Matcher m=p.matcher(str);
    		//使用Matcher对象的方法对字符串进行操作。
    		//获取三个字母组成的单词
    		//查找:find();
    		System.out.println(str);
    		while(m.find()){
    			System.out.println(m.group());//获取匹配的子序列
    			System.out.println(m.start()+":"+m.end());
    		}
    	}
    
    	public static void functionDemo_3() {
    		String str="zhangsanttttlisinnnnxiaoqiang";
    		str=str.replaceAll("(.)\1+", "$1");//$1表示获取前面正则中的第一个组
    		String tel="15811112222";
    		tel=tel.replaceAll("(\d{3})\d{4}(\d{4})", "$1****$2");
    		System.out.println(str);
    		System.out.println(tel);
    	}
    
    	public static void functionDemo_2() {
    		/*
    		 * 切割
    		 * 
    		 * 组((A)(B(C)))
    		 * 1,((A)(B(C)))
    		 * 2,A
    		 * 3,(B(C))
    		 * 4,(C)
    		 */
    		String str="zhangsan  lisi xiaoqiang";
    		//String[] names=str.split(" +");//如果名字之间是一个空格,正则就用" ";如果有多个空格,就用" +";
    		//如果为.正则就用"\.";
    		String str1="zhangsanttttlisinnnnxiaoqiang";
    		String[] names=str1.split("(.)\1+");//表示从有重复元素的地方切割
    		//正则中封装对象用()
    		for(String name:names){
    			System.out.println(name);
    		}
    	}
    
    	public static void functionDemo_1() {
    		//验证手机号是否符合格式
    		String tel="15200001111";
    		String regex="[1][358][0-9]{9}";//可以将[0-9]转成"\d",表示数字
    		boolean b=tel.matches(regex);
    		System.out.println(tel+":"+b);
    	}
    
    }
    
  • 相关阅读:
    国内高通量基因测序公司成立 时间表
    递推法(归纳法)
    1. 基础知识 (直方图 柱状图 正态分布 模型 抽样分布 )
    1. 基础概念 (统计分布 抽样 置信区间 标准差)
    史上最全 | 39个RNAseq分析工具与对比
    转录组分析工具大比拼 (完整翻译版)
    C#、.NET Framework、CLR的关系
    C#程序集及程序集概念介绍
    SSM处理 No 'Access-Control-Allow-Origin' header is present on the requested resource 问题
    mybatis字符#与字符$的区别
  • 原文地址:https://www.cnblogs.com/lzzhuany/p/4532990.html
Copyright © 2011-2022 走看看