zoukankan      html  css  js  c++  java
  • java 正则表达式获取匹配和非获取匹配

     1 package test1;
     2 
     3 import java.util.regex.Matcher;
     4 import java.util.regex.Pattern;
     5 
     6 public class TestExp {
     7     /**
     8      * 
     9      * 在使用正则表达式的时候,我们经常会使用()把某个部分括起来,称为一个子模式。 子模式有Capturing和Non-Capturing两种情况。
    10      * Capturing指获取匹配 :
    11      * 是指系统会在幕后将所有的子模式匹配结果保存起来,供我们查找或者替换。如后向引用(在表达式的后面应用前面匹配的子字符串)的使用;
    12      * Non-Capturing指非获取匹配 :
    13      * 这时系统并不会保存子模式的匹配结果,子模式的匹配更多的只是作为一种限制条件使用,如正向预查,反向预查,负正向预查,负反向预查等。
    14      * 
    15      * 在Java中可以使用非获取匹配作为筛选子字符串的条件。例如 想获得“hello world !”中的“hello world ”
    16      * ,注意,不要感叹号。 就可以再匹配感叹号时使用非获取的正则表达式。("hello world (?=!)")
    17      * 
    18      * Java中后向引用的使用:
    19      * "abc def".replaceFirst("(\w+)\s+(\w+)", "$2 $1"); //结果为def abc 
    20      * "abc def aaa bbb".replaceAll("(\w+)\s+(\w+)", "$2 $1"); //结果是 def abc bbb aaa
    21      * 
    22      * 使用$x替换字符中子字符串。
    23      * 
    24      * */
    25     public static void main(String[] args) {
    26         /** groupcount 的下标是从0开始的,也就是说如果获取一个匹配项,那么该值为0 */
    27         /** 正向肯定预查 */
    28         /**
    29          * 目的: 查找元字符中符合“win ”格式的子字符串,而且该字符串后面紧跟一个“7”字符串。
    30          * 
    31          * */
    32         /*
    33          * Pattern ptn = Pattern.compile("win (?=7)",Pattern.UNICODE_CASE) ;
    34          * Matcher m = ptn.matcher("win 7") ; System.out.println("groupcount: "
    35          * + m.groupCount()); while(m.find()){ System.out.println(m.group()); }
    36          */
    37         /** 正向否定预查 */
    38         /**
    39          * 目的: 查找元字符中符合“win ”格式的子字符串,而且该字符串后面没有跟一个“7”字符串。
    40          * 
    41          * */
    42         /*
    43          * Pattern ptn = Pattern.compile("win (?!7)",Pattern.UNICODE_CASE) ;
    44          * Matcher m = ptn.matcher("win 8") ; while(m.find()){
    45          * System.out.println(m.group()); }
    46          */
    47         /** 反向肯定预查 */
    48         /**
    49          * 目的:查找元字符串中符合“win”的子字符串,而且在该字符串前面还跟着“7”字符串。 获取的是win,因为7是非获取的。
    50          * 
    51          * */
    52         /*
    53          * Pattern ptn = Pattern.compile("(?<=7)win",Pattern.UNICODE_CASE) ;
    54          * Matcher m = ptn.matcher("7win") ; while(m.find()){
    55          * System.out.println(m.group()); }
    56          */
    57         /** 反向否定预查 */
    58         /**
    59          * 目的:查找元字符串中符合“win”的子字符串,而且在该字符串前面不跟“7”字符串。
    60          * 
    61          */
    62         /*
    63          * Pattern ptn = Pattern.compile("(?<!7)win",Pattern.UNICODE_CASE) ;
    64          * Matcher m = ptn.matcher("8win") ; while(m.find()){
    65          * System.out.println(m.group()); }
    66          */
    67     }
    68 }
  • 相关阅读:
    Tensorflow使用环境配置
    学习笔记——EM算法
    学习笔记——提升方法
    学习笔记——支持向量机
    加入BOINC(伯克利开放式网络计算平台)
    斐波那契大数模板
    多重部分和的计数dp
    POJ 2674 Linear world
    POJ 1222 EXTENDED LIGHTS OUT(翻转+二维开关问题)
    POJ3185 The Water Bowls(反转法or dfs 爆搜)
  • 原文地址:https://www.cnblogs.com/caiyao/p/4085681.html
Copyright © 2011-2022 走看看