正则表达式的认识,

正则表达式

1.概念
正则表达式,又称规则表达式。(英语:Regular Expression,常简写为regex)。正则表达式通常被 用来检索、替换那些符合某个模式(规则)的文本。支持正则表达式的有:PHP、Java、Python、 JavaScript等。有了正则表达式写代码更加简洁,通常两三行代码就可以达到目的。
2.规则

  1. 任意一个字符表示匹配任意对应的字符,如a匹配a,7匹配7,-匹配-。
 String email="@";
        System.out.println(email.matches("@"));
  1. []代表匹配中括号中其中任一个字符,如[abc]匹配a或b或c。
String s="a";
        System.out.println(s.matches("[xay]"));
  1. -在中括号里面和外面代表含义不同,如在外时,就匹配-,如果在中括号内[a-b]表示匹配26个小写字母中的任一个;
String s = "-o";
        System.out.println(s.matches("-[n-q]"));
        System.out.println(s.matches("[-a-z]"));
        System.out.println(s.matches("[-o]"));
  1. 在中括号里面和外面含义不同,如在外时,就表示开头,如7[0-9]表示匹配开头是7的,且第二位是任一数字的字符串;如果在中括号里面,表示除了这个字符之外的任意字符(包括数字,特殊字符),如[^abc]表示匹配出去abc之外的其他任一字符。
 //特殊字符匹配^[]前表示开头$表示结尾
        String s="z^a";
        System.out.println(s.matches("^z[^abc][abc]$"));
  1. .表示匹配任意的字符。
 //.匹配任意字符\\.或[.]就表示.本身
        String s="^&你好.";
        System.out.println(s.matches("....."));
        System.out.println(s.matches("....[.]"));
        System.out.println(s.matches("...[.][.]"));
        System.out.println(s.matches("....\\."));
  1. \d表示数字。
//匹配数字
        String s= "124";
        System.out.println(s.matches("\\d\\d\\d"));
        System.out.println(s.matches("[0-9][0-9][0-9]"));
  1. \w表示字母、数字、下划线,[a-zA-Z0-9_]。
//匹配变量名(单纯符号)\\w 字母, 数字,下划线
        String s ="d_9";
        System.out.println(s.matches("\\w\\w\\w"));
        System.out.println(s.matches("[A-Za-z0-9][A-Za-z0-9][A-Za-z0-9]"));
  1. [\u4e00-\u9fa5]匹配汉字
 //匹配汉字
        String s="姓名:tom";
        System.out.println(s.matches("[\\u4e00-\\u9fa5][\\u4e00-\\u9fa5]:[a-z][a-z][a-z]"));
        System.out.println(s.matches("姓名:[a-z][a-z][a-z]"));
  1. ?: 表示出现0次或1次,+表示出现1次或多次, *表示出现0次、1次或多次, {n}表示出现n次,{n,m}表示出现n~m次,{n,}表示出现n次或n次以上。
//量词 符号
        String s="姓名:tom666";
        System.out.println(s.matches("[\\u4e00-\\u9fa5]{2}:\\w{6}"));
        System.out.println(s.matches("[\\u4e00-\\u9fa5]{1,3}:\\w{6}"));
        System.out.println(s.matches("[\\u4e00-\\u9fa5]{1,}:\\w{6}"));
        System.out.println(s.matches("[\\u4e00-\\u9fa5]{2,2}:\\w{6}"));
        System.out.println(s.matches("[\\u4e00-\\u9fa5]+:\\w{6}"));//+ 表示1次及1次以上
        System.out.println(s.matches("[\\u4e00-\\u9fa5]*:\\w{6}"));//* 任意次数
        System.out.println(s.matches("[\\u4e00-\\u9fa5]?:\\w{6}"));//? 0或者1次

正则表达式中的断言(assertions)

1、什么是断言?
广义上理解,断言(assertions),从字面上理解就是,判定是,还是否。在正则表达式的系统里,也就是匹配或者不匹配。随便写一个正则表达式,都能产生匹配或者不匹配的结果,所以,可以这样说,所有的正则表达式都可以叫断言。
有时候,我们也经常会看到看到这个概念,零宽断言(zero-width assertions)。普通的断言,比如\d+(匹配一个或者多个数字),它所匹配的内容是由长度的;而有些断言比如^和$(分别匹配行开头和结尾)匹配的仅仅是一个位置,这样可以理解为它所匹配的内容长度为0。所以,称这类断言为零宽断言(zero-width assertions)。

案例
某网站要求注册的账号只能是:字母和数字,不能都是字母,不能都是数字,且要求字母开头,长度在6-12之间,

 Scanner sc = new Scanner(System.in);
        System.out.println("请输入字符串");
        String s = sc.nextLine();
        System.out.println(s.matches("^[a-zA-Z](?![a-zA-Z]{6,12}$)(?![0-9]{6,12}$)[a-zA-Z0-9]{6,12}"));

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值