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

    一、定义

    正则表达式是含有一些具有特殊意义字符的字符串,这些特殊字符称为正则表达式中的元字符

    eg:"\dhello"中的\d就是有特殊意义的元字符,代表0--9数字中的任意一个,而9hello,1hello都是和正则表达式\dhello匹配的字符串

     ------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    二、部分元字符意义

      元字符  在正则表达式中的写法  意义
      .   "." 代表任意一个字符
      d "\d" 代表0--9任意一个数字
      D "\D" 代表任意一个非数字字符
      s "\s" 代表空格类字符," "," ","f"," "
      S "\S" 代表非空格类字符
      w "\w" 代表可用于标识符的字符(不包含美元符号)
      W "\W" 代表不能用于标识符的字符

      ------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    三、方括号中元字符意义

    1、[abc]:代表a、b、c中的任意一个

    2、[^abc]:代表除了a、b、c意外的任意一个

    3、[a-zA-Z]:代表英文字母中任意一个

    4、[a-d]:代表a至d中任意一个

    5、[a-d[m-p]]:代表a至d,或m至p中的任意一个字符(并)

    6、[a-z&&[def]]:代表a-z与d、e、f交集  ,即代表d、e、f中的任意一个(交)

    7、[a-f&&[^bc]]:代表a、d、e、f(差)

    8、[.]代表.   由于"."代表任何一个字符,所以在正则表达式中如果想使用普通意义的点字符,必须使用[.]

      ------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    四、限定修饰符的用法

    带限定符号的模式       意义
    X? X出现0次或1次
    X* X出现0次或多次
    X+ X出现1次或多次
    X{n} X恰好出现n次
    X{n,} X至少出现n次
    X{n,m} X出现n--m次

      ------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    五、相关正则类

    1.String 类:matches()


        String reg = "\d";
        String str = "123";
        str.matches(reg);  //返回true.false

        str.replaceAll(reg,"")//替换,将数字替换为空
        str.split(reg) //将str按正则表达式reg分割

     1 package zhenze;
     2 
     3 public class Demo02 {
     4     public static void main(String[] args) {
     5         String regex = "[1-9][0-9]*[.]?[0-9]*";
     6         String str1="12r34a5";
     7         String str2="123.3457";
     8         if(str1.matches(regex))
     9         {
    10             System.out.println(str1+"可以表示数字");
    11         }
    12         else
    13         {
    14             System.out.println(str1+"不可以表示数字");
    15             String result=str1.replace("\D", "");  //替换,去掉非数字字符
    16             System.out.println("剔除"+str1+"的非数字字符得到的字符串是:"+result);
    17         }
    18         if(str2.matches(regex))
    19         {
    20             System.out.println(str2+"可以表示数字");
    21         }
    22         else
    23         {
    24             System.out.println(str2+"不可以表示数字");
    25             String result=str1.replace("\D", "");  //替换,去掉非数字字符
    26             System.out.println("剔除"+str2+"的非数字字符得到的字符串是:"+result);
    27         }
    28     }
    29     
    30     
    31 }
    32 
    33 控制台信息:
    34 12r34a5不可以表示数字
    35 剔除12r34a5的非数字字符得到的字符串是:12r34a5
    36 123.3457可以表示数字
    示例

    2.Pattern类
        Pattern p = Pattern.compile("\d");                 //初始化模式对象
        Matcher m = p.matcher("ass923asdf");           //用带匹配字符序列初始化匹配对象
        boolean b = m.matches();                          //返回匹配结果true.false

     1 package zhenze;
     2 
     3 import java.util.regex.Matcher;
     4 import java.util.regex.Pattern;
     5 
     6 public class Demo01 {
     7     //Pettern 类
     8     public static void main(String[] args) {
     9         Pattern p;   //模式对象
    10         Matcher m;   //匹配对象
    11         String regex="[1-9][0-9]*[.]?";
    12         p=Pattern.compile(regex);  //初始化模式对象
    13         String s="Price:123.456";
    14         m=p.matcher(s);
    15         while(m.find())
    16         {
    17             String str=m.group();
    18             System.out.println(""+m.start()+""+m.end()+"匹配模式子序列");
    19             System.out.println(str);
    20         }
    21     }
    22 }
    23 
    24 控制台信息:
    25 从6到10匹配模式子序列
    26 123.
    27 从10到13匹配模式子序列
    28 456
    示例
  • 相关阅读:
    多种方式实现数组的扁平化处理
    利用node中的内置模块fs实现对简单文件的读取 拷贝 创建等功能
    浅谈es5和es6中的继承
    js之冒泡排序与快速排序
    IE5,IE6,IE7,IE8的css兼容性列表[转自MSDN]
    css3 动画
    各种浏览器css hack
    解决li在ie,firefox中行高不一致问题
    Css:背景色透明,内容不透明之终极方法!兼容所有浏览器
    png-24在ie6中的几种透明方法
  • 原文地址:https://www.cnblogs.com/xqxacm/p/4749760.html
Copyright © 2011-2022 走看看