zoukankan      html  css  js  c++  java
  • Java基础--正则表达式的规则

    注意:正则表达式只关注格式是否正确,不关注内容是否有效。

      1、[abc] :指a,b,c中的任意一个字符。

      2、[^abc]:指除了a,b,c外的任意字符。

      3、[a-z]:表示a到z间的任意一个字符。

      4、[a-zA-Z0-9]:表示a到z,A到Z,0到9的任意一个字符。

      5、[a-z&&[^bc]]:等价于[ad-z],指a到z间除了b,c字符的任意字符。


    二、预定义字符集* ( . )表示任意一个字符。

      1、d : 数字字符集,相当于[0-9],

      2、w:单词字符集,相当于[a-zA-Z0-9_]。
      3、s:空白字符集,相当于[ f xoB]。
      4、D:非d
      5、W:非w
      6、S:非s

    三、数量词

      1、?表示0个或一个。
      2、* 表示0个或无穷个。
      3、+ 表示1个或无穷个。
      4、{n}表示n个。
      5、{n, }表示n个到无穷个。
      6、{n, m }表示n个到m个(m>n)。
      7、() 表示一个整体。比如:(+86)就是表示+86,此时+需要转义。
      8、^在[]中表示非,而放在[]外,表示以……开头。比如^[0-9]就是以数字0-9开头。
      9、$表示以……结尾,比如[0-9]$就是指以数字0-9结尾。


    四、java的String中正则表达式写法(转义的问题)

      1、11位手机号正则表达式: "^[0-9]{11}$" ;

      2、邮箱正则表达式:"^[a-zA-Z0-9_]+@[a-zA-Z0-9_]+(.[a-zA-Z0-9])+$" ;此时若使用String regex = " [a-zA-Z0-9_]+@[a-zA-Z0-9_]+(\.[a-zA-Z0-9])+ "; 由于java字符串认为 ( . ) 不需要进行转义,所以写成 ( . )会报错,需要对 进行转义, 即写成 ( \. )

      3、简单的日期表达式:"^\d{4}(\-|\/|\.)\d{1,2}\1\d{1,2}$"  ;  1表示匹配第一个小括号的内容,即(-|/|.)

     1 public class Test {
     2     public static void main(String[] args) {
     3         String regexDemo1 = "^\d{4}(\-|\/|\.)\d{1,2}\1\d{1,2}$";
     4         String str = "2019.05.22";
     5         System.out.println(str.matches(regexDemo1)); // 返回true
     6 
     7         // regexDemo1等价于regexDemo2。 其 1 指的即为第一个小括号(), 即 1 指的是 (-|/|.)
     8         String regexDemo2 = "^\d{4}(\-|\/|\.)\d{1,2}(\-|\/|\.)\d{1,2}$";
     9         System.out.println(str.matches(regexDemo2)); // 返回true
    10     }
    11 }

    五、字符串的替换与分解(使用正则表达式)

      1、public boolean matches(String regex);判断当前字符串对象是否与参数regex格式相匹配。
      2、public String replaceAll(String regex, String replacement);将字符串中符合regex格式的子串替换成replacement,此时并未改变原始字符串。

      3、public String[] split(String regex); 将字符串使用regex标记分割,并将分割后的单词存入字符串数组中。

     

     1 public class Test {
     2     public static void main(String[] args) {
     3         String regex = "[0-9]+";
     4         String str = "hello123world123";
     5         System.out.println("原始字符串为: " + str);//输出hello123world123
     6 
     7         System.out.println("替换字符串后为: " +str.replaceAll(regex, " welcome ")); //输出hello welcome world welcome 
     8         System.out.println("原字符串不变:" + str); //不会改变原来的字符串,输出为hello123world123
     9 
    10         System.out.println("输出切割后的字符串: ");
    11         String digitWord[] = str.split(regex); // 以regex格式分割
    12         for (String s : digitWord) {
    13             System.out.println(s);
    14         }
    15     }
    16 }
    17 /*
    18 测试结果为:
    19 原始字符串为: hello123world123
    20 替换字符串后为: hello welcome world welcome 
    21 原字符串不变:hello123world123
    22 输出切割后的字符串: 
    23 hello
    24 world
    25 */
  • 相关阅读:
    MySQL表碎片整理
    MySQL表碎片整理
    MySQL配置索引页的合并阈值
    MySQL InnoDB配置统计信息
    MySQL InnoDB配置统计信息
    代码检查工具sonarqube介绍及使用
    gradle多模块构建集成swagger
    springboot不加载bootstrap.properties文件
    nexus3.x启动不起来
    linux防火墙查看状态firewall、iptable
  • 原文地址:https://www.cnblogs.com/huoyz/p/14374369.html
Copyright © 2011-2022 走看看