正则表达式的知识点梳理

this is text 匹配this is text 

this\s+is\s+text\s+ 匹配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 属性,^还会与\n或者\r之后的位置匹配

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

*  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 方法都用来尝试匹配一个输入序列模式,

 

posted @ 2020-05-07 10:23  dousil  阅读(223)  评论(0编辑  收藏  举报