zoukankan      html  css  js  c++  java
  • 正则表达式的知识点梳理

    this is text 匹配this is text 

    thiss+iss+texts+ 匹配this后边任意多个空格+is + 任意多个空格+text+任意多个空格

    ^d+(.d+)?      ^ 表示以数字开头

           d+ 表示有一个多个数字

            .表示一个点

            ?表示他中的字符是可用选择的

           可以匹配的字符2          4        22.3     

    Pattern 

        pattern对象是一个正则表达式的编译器,

    Matcher 

       对象是对输入字符串进行解释匹配

    import java.util.regex.*;
     
    class RegexExample1{
       public static void main(String args[]){
          String content = "I am noob " +
            "from runoob.com.";
     
          String pattern = ".*runoob.*";
     
          boolean isMatch = Pattern.matches(pattern, content);
          System.out.println("字符串中是否包含了 'runoob' 子字符串? " + isMatch);
       }
    }

    捕获组

         捕获组是把多个字符当作一个单独的单元进行处理的方法,例如表达式((A)(B)(c))有如下四个分组

    ((A)(b) (c))

    (a)   

    ((b)(c))

    (b)

    (c)

    捕获组是通过从左向右计算其开括号来编号 group(0)     表示整个表达式

    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
     
    public class RegexMatches
    {
        public static void main( String args[] ){
     
          // 按指定模式在字符串查找
          String line = "This order was placed for QT3000! OK?";
          String pattern = "(\D*)(\d+)(.*)";
     
          // 创建 Pattern 对象
          Pattern r = Pattern.compile(pattern);
     
          // 现在创建 matcher 对象
          Matcher m = r.matcher(line);
          if (m.find( )) {
             System.out.println("Found value: " + m.group(0) );
             System.out.println("Found value: " + m.group(1) );
             System.out.println("Found value: " + m.group(2) );
             System.out.println("Found value: " + m.group(3) ); 
          } else {
             System.out.println("NO MATCH");
          }
       }
    }

    所谓的捕获组 就是把括号里边匹配的值都打印出来

    其他语言中\表示反斜杠,没有特殊含义 。代表特殊含义      https://www.cnblogs.com/chenkeyu/p/7574924.html

    在java 语言中\表示转意符号,\\表示 单独的.在java 语言中\代表一个

    几种特殊字符的说明

    ^  匹配字符串开始的位置,如果设置了Multiline 属性,^还会与 或者 之后的位置匹配

    $  匹配字符串的结束的位置,如果设置了Multiline属性,$还会与 之前的属性匹配

    *  0次或多次

    + 代表IC饿货多次

    ()?代表存在不存在

    ?的特殊使用,当?出现在? + *{n,},{n,m}的时候表示他是非贪心的。他的含义是尽可能短的匹配字符串。而默认的匹配模式是贪心的匹配模式,是尽可能长的匹配我们要使用的对象。

    soooooo    so+匹配的是sooooo     so+匹配的是so

    (pattern) 括号中可以存放存放的是子正则表达式。可以使用$0  $9  从结果匹配集合中检索获捕匹配,若要匹配括号内的字符()  请使用()

    (?pattern) 匹配patern ,但是不不住该匹配的子表达式,也就是他是个非捕获的匹配。不存储供以后使用的匹配,这对于or(|)  组合模式部件的情况很有用,

    (?=pattern)

    (?!pattern)

    x|y  匹配x和y

    [abc]匹配abc中任意字符串

    [^abc]匹配不包含abc的字符

    d代表数字

    D代表非数字

    s代表空格

    S代表非空格

    Matcher 类的方法

    \b代表单词的边界

    \B代表非单纯边界

    matches 和lookingAt方法,matches 和lookingAt 方法都用来尝试匹配一个输入序列模式,

  • 相关阅读:
    编程思想
    为什么静态成员、静态方法中不能用this和super关键字
    C#中静态与非静态方法比较
    数组,集合,列表的使用与区别
    2017-3-23 网络IP
    [精彩] 关于DB2的内存分配
    DB2 常用命令
    SQL0973N在 "<堆名>" 堆中没有足够的存储器可用来处理语句
    DB2通用数据库性能调整的常用方法
    创建DB2数据库联合对象
  • 原文地址:https://www.cnblogs.com/dousil/p/12841237.html
Copyright © 2011-2022 走看看