`

正则基础

    博客分类:
  • java
阅读更多

 

public class ReEX {
    
/** *//**
     * 
@param args
     
*/

    
/** *//**
     * 
@param args
     
*/

    
public static void main(String[] args){

        
//正则表达式
        
//用途:字符匹配\字符查找\字符替换
        
//类:
        
//-1-java.lang.String
        
//-2-java.util.regex.Pattern
        
//-3-java.util.regex.Matcher
        
        
//.代表一个字符,例:
        
//p("abc".matches(""))
        
        
//replaceAll(regex, replacement)方法
        
//p("a8789a".replaceAll("\\d", "-"));
        
        
//Pattern类--代表匹配字符串的模式,使用Pattern.compile(arg0)方法
        
//[a-z]a到z中的一个字符;[a-z]{3}a到z中的任三个字符
        
        
//Pattern类的matcher(string)方法--用模式匹配某个字符串(String实现了CharSequence字符序列的接口)
        
        
//Matcher类的matches()方法--得到结果
        
//Pattern p = Pattern.compile("[a-z]{3}");
        
//Matcher m=p.matcher("fgh");//Matcher是一个匹配器用于存储结果
        
//p(m.matches());
        
//以上代码同于p(fgh.matches([a-z]{3}));
        
        
//*零个或多个 
        
        
//+一个或多个
        
        
//?零个或一个
        
//例子
        /**//*p("a".matches("."));
        p("aa".matches("aa"));
        p("aaaa".matches("a*"));
        p("aaaa".matches("a+"));
        p("aaaa".matches("a?"));//false
        p("".matches("a*"));
        p("234324324123".matches("\\d{3,100}"));
        p("192.168.0.aaa".matches("\\d{1,3}.\\d{1,3}.\\d{1,3}.\\d{1,3}."));//false
        p("192".matches("[0-2][0-9][0-9]"));
*/

        
        
//范围[]其中一个字符  ^取反  -代表一个范围  |或者   &&取交集
        /**//*p("a".matches("[abc]"));
        p("a".matches("[^abc]"));
        p("A".matches("[a-zA-Z]"));
        p("A".matches("[a-z]|[A-Z]"));
        p("A".matches("[a-z[A-Z]]"));
        p("R".matches("[A-Z&&[RFG]]"));
*/

        
        
//认识 \s一个空白字符 \一个构成单词的字符 \d 代表一个数字
        
//    \S上面取反            \W上面取反                       \D上面取反    
        /**//*p(" \n\r\t".matches("\\s{4}"));
        p(" ".matches("\\S"));
        p("a_8".matches("\\w{3}"));
        p("abc888&^".matches("[a-z]{1,3}\\d+[&^#]+"));
        p("\\".matches("\\\\"));
*/

        
        
//边界处理
        /**//*p("hello sir".matches("^h.*"));
        p("hello sir".matches(".*ir$"));
        p("hello sir".matches("^h[a-z]{1,3}o\\b.*"));
        p("hellosir".matches("^h[a-z]{1,3}o\\b.*"));
        p(" \n".matches("^[\\s&&[^\\n]]*\\n$"));//空白行
*/

        
        
//练习
        /**//*p("aaa 8888c".matches(".*\\d{4}."));
        p("aaa 8888c".matches(".*\\b\\d{4}."));
        p("aaa8888c".matches(".*\\d{4}."));
        p("aaa8888c".matches(".*\\b\\d{4}."));
*/

        
        
//email
        
//p("safsadfsdafsafasf@dsafsaf.com".matches("[\\w[.-]+@[\\w[.-]]]+\\.[\\w]+"));
        
        
//find();依次顺序查找子串    lookingAt();每次从开始位置开始查找子串 m.start()找到的起始位,m.end()找到的子串未位,找不到使用会报错
        
        
/**//*Pattern p=Pattern.compile("\\d{3,5}");
        String s="123-23234-343-00";
        Matcher m=p.matcher(s);
        p(m.matches());
        m.reset();//把原来吃进的子串给吐出来
        p(m.find());
        p(m.start()+"-"+m.end());//m.start()找到的起始位,m.end()找到的子串未位,找不到使用会报错
        p(m.find());
        p(m.find());
        p(m.find());
        
        p(m.lookingAt());
        p(m.lookingAt());
        p(m.lookingAt());
        p(m.lookingAt());
*/

        
        
//replacement()--字符串的替换
        /**//*Pattern p=Pattern.compile("java",Pattern.CASE_INSENSITIVE);//Pattern.CASE_INSENSITIVE 略大小写
        Matcher m=p.matcher("java Java JAVa IloveJAVA you hateJava");
        StringBuffer buf=new StringBuffer();
        int i=0;
        //p(m.replaceAll("JAVA"));
        while(m.find())
        {
            i++;
            if(i%2==0)
            {
                m.appendReplacement(buf, "java");
            }
            else
            {
                m.appendReplacement(buf, "JAVA");
            }
        }
        p(buf);
*/

        
        
//分组
        /**//*Pattern p=Pattern.compile("(\\d{3,5})([a-z]{2})");
        String s="123aa-34345bb-234cc-00";
        Matcher m=p.matcher(s);
        while(m.find())
        {
            p(m.group());
            //p(m.group(1));
            //p(m.group(2));
        }
*/

        
        
//(?=a)不捕获a  .{3}(?=a)为444;.{3}(?!a)为66b
        /**//*Pattern p = Pattern.compile(".{3}(?!a)");
        String s = "444a66b";
        Matcher m = p.matcher(s);
        while(m.find()) {
            p(m.group());
        }
*/


        
//back refenrences向前引用(\\d\\d)\\1
        
//Pattern p = Pattern.compile("(\\d\\d)\\1");
        
//String s = "1212";
        /**//*Pattern p = Pattern.compile("(\\d(\\d))\\2");
        String s = "122";
        Matcher m = p.matcher(s);
        p(m.matches());
*/

        
        
//flages的简写
        
//Pattern p = Pattern.compile("java", Pattern.CASE_INSENSITIVE);
        
//p("Java".matches("(?i)(java)")); //同上
    }

    
public static void p(Object o){
        System.out.println(o);
    }

}

class Rexg
{
    public static 
void main(String[] args)
    
{
        
// \d{5}(-\d{4})?    ?表示上面的可有可无
        /**//*p("10101".matches("\\d{5}(-\\d{4})?"));
        p("10101-1234".matches("\\d{5}(-\\d{4})?"));
        p("abc".matches("abc?"));
        p("ab".matches("abc?"));
        p("abc".matches("a(bc)?"));
        p("a".matches("a(bc)?"));
*/

        
        
//子匹配  用()括起 \1表示每一个()中的子匹配 
        //1221,3553可表示为(\d)(\d)\2\1
        //11111,22222可表示为(\d)\1{4}
        
        
//作用:1有效性验证 2 替换内容 3查找某一类形的文本
        
    }

    public static 
void p(Object obj)
    
{
        System.out.println(obj);
    }

}
分享到:
评论

相关推荐

    正则基础之——NFA引擎匹配原理.rar

    本文件“正则基础之——NFA引擎匹配原理.rar”将深入探讨NFA的工作机制。 首先,我们需要理解NFA的基本概念。NFA是一种有向图,每个节点代表一个状态,边则表示状态间的转换。在NFA中,一个输入字符可以引发多个...

    正则基础之——小数点.rar

    在这个"正则基础之——小数点"的主题中,我们将深入探讨小数点在正则表达式中的应用。 1. 小数点(`.`)的元字符含义: 在正则表达式中,小数点(`.`)是一个元字符,它代表任意单个字符,除了换行符。这意味着`.`...

    正则基础之——捕获组(capture group).rar

    本文件“正则基础之——捕获组(capture group)”将深入讲解正则表达式中的一个重要概念——捕获组,这是理解和运用正则表达式不可或缺的一部分。 捕获组是正则表达式中的一种机制,它允许我们将一个模式分隔成多...

    正则基础之——NFA引擎匹配原理[参照].pdf

    正则基础之——NFA引擎匹配原理 在正则表达式中,了解引擎匹配原理是非常重要的。就像音乐家一样,一个人可以演奏出动听的乐曲,但是如果不知道如何去改变音符的组合,乐曲就不会变得更动听。同样,在使用正则...

    前端教程:78 正则基础语法

    千锋Web前端教程_78_正则基础语法

    前端教程:79 正则基础语法

    千锋Web前端教程_79_正则基础语法

    前端教程:80 正则基础语法

    千锋Web前端教程_80_正则基础语法

    前端教程:81 正则基础语法

    千锋Web前端教程_81_正则基础语法

    正则基础之 神奇的转义

    正则表达式是一种强大的文本匹配工具,广泛应用于编程语言和各种文本处理场景中。正则表达式通过使用一系列特殊字符,即元字符,来定义复杂的搜索模式。这些元字符具有特殊的意义,如表示重复次数、选择、分组等。...

    正则基础之 环视 Lookaround

    正则表达式中的环视(Lookaround)是正则表达式中用于位置匹配的一种特殊构造,它允许我们在满足某些条件的位置上进行匹配,但匹配过程中并不消耗任何字符,也就是说,匹配结果不包括在最终的匹配结果中。...

    正则基础之——贪婪与非贪婪模式 .rar

    在正则表达式的世界里,贪婪与非贪婪模式是两种重要的匹配策略,它们决定了正则表达式在查找匹配时的行为。这两个概念对于任何想要深入理解正则表达式的开发者来说至关重要。 首先,我们来理解一下“贪婪”模式。...

    javastript正则表达式基础

    javastript正则表达式基础 javastript正则表达式基础 javastript正则表达式基础

    正则表达式基础正则表达式基础

    正则表达式(Regular Expression,简称regex)是用于匹配字符串的一种模式,广泛应用于文本处理、数据验证、搜索和替换...在“正则表达式基础.ppt”这个文件中,应该包含了更详细的讲解,可以帮助你深入理解这一主题。

    shell脚本-基础正则和扩展正则.docx

    shell脚本-基础正则和扩展正则 基础正则元字符功能案例结果: 1. `.` : 匹配单个字符 - 例如:`/l.ve/` 可以匹配 `love`、`live` 等字符串 2. `[ ]` : 匹配括号内的任意单个字符 - 例如:`/l[Oo]ve/` 可以匹配 ...

    vba正则表达式基础

    vba正则表达式基础知识介绍,由浅入深,实例讲解

    Python正则表达式基础

    Python正则表达式基础是学习如何在Python中应用正则表达式的入门指南。正则表达式,或称为REs、regexes、regexpatterns,是能够嵌入到Python中的一个精细、高度专业化的程序语言。通过re模块,程序员得以使用这一...

    正则基础之 小数点

    一些细节 对于使用传统NFA引擎的大多数语言和工具,如Java、.NET来说,“.”的匹配范围是匹配除了换行符“\n”以外的任意一个字符。 但是对于javascript来说有些特殊,由于各浏览器的解析引擎不同,“.”的匹配范围...

    jQuery中的正则表达式分析 正则基础

    下面,我们将详细分析在jQuery中可能用到的几种正则表达式的基础概念和应用。 首先,我们来看一个具体的正则表达式示例: ```javascript quickExpr = /^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]+)$)/; ``` 这个正则...

Global site tag (gtag.js) - Google Analytics