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);
    	}
    
    }
    
  • 相关阅读:
    out/host/linuxx86/obj/EXECUTABLES/aapt_intermediates/aapt 64 32 操作系统
    linux 查看路由器 电脑主机 端口号 占用
    linux proc进程 pid stat statm status id 目录 解析 内存使用
    linux vim 设置大全详解
    ubuntu subclipse svn no libsvnjavahl1 in java.library.path no svnjavahl1 in java.library.path no s
    win7 安装 ubuntu 双系统 详解 easybcd 工具 不能进入 ubuntu 界面
    Atitit.json xml 序列化循环引用解决方案json
    Atitit.编程语言and 自然语言的比较and 编程语言未来的发展
    Atitit.跨语言  文件夹与文件的io操作集合  草案
    Atitit.atijson 类库的新特性设计与实现 v3 q31
  • 原文地址:https://www.cnblogs.com/lzzhuany/p/4532990.html
Copyright © 2011-2022 走看看