正则表达式的用法

北城以北 提交于 2020-02-28 19:15:03

正则表达式在Java的使用

  • Java中用双反斜杠表示正则中的单反斜杠,所以\w必须写成\\w,其他同理
  • 使用spilt分割的时候,匹配的字符会“消失”,即作为分割

下面开始介绍Java里面的正则表达式

1.几个简单的知识:

  • 1.\w 小写w 和 大小写字母 数字 下划线 相匹配 (Java编程思想竟然说\w识别单词,害
  • 2.\w+ 识别上述字符以及后面的一串满足条件的
  • 3.\W 识别其他字符
  • 4.\W+ 识别其他字符以及后面的其他字符
  • 5.+号如果作为正号需要加\\ 作为后缀不需要
  • 6.a\w+表示以a开头的且后面必须跟着上述字符的,比如"a(空格符)" 是不符 合的

\w \W

public class Spilt {
    public static void main(String[] args) {
        /*  \w  \w+ \W  \W+*/
        /*
        * 1.\w  小写w 和 大小写字母 数字 下划线 相匹配 (Java编程思想竟然说\w识别单词,害
        * 2.\w+ 识别上述字符以及后面的一串满足条件的
        * 3.\W  识别其他字符
        * 4.\W+ 识别其他字符以及后面的其他字符
        * */
        String s1="3ap1le pe5cah";
        String s2="ap_ple _peach or3nge_";
        split(s1,"\\w+");
        split(s2,"\\w+");

        split(s1,"a\\w+");
        split(s2,"a\\w+");

        split(s1,"\\W+");
        split(s2,"\\W+");
    }
    public static void split(String s,String regex){
        List<String> strings = Arrays.asList(s.split(regex));
        System.out.println(regex);
        print(strings);
    }
    public static void print(List<String> list){
        System.out.println("--------------");
        for(String s:list){
            System.out.println(s);
        }
        System.out.println("--------------");
    }
}

这里补充一点需要注意的:
比如如下是一个字符串 ap p,在使用a\\w+的时候,list的0号元素是null
在这里插入图片描述
list.get(0)–> null
list.get(1)–>" "
list.get(2)–>“p”

\d

表示数字字符,利用上面的方法

...
        String s3 = "13a 2 3";
        split(s3,"\\d+");//一串数字
        split(s3,"\\d");//一个数字
...

限定符

  • “+” 至少1次

  • “*” 0次 1次 多次

  • “?” 至多1次

  • {n} n为非负整数 匹配n次

  • {n,} 至少匹配n次

  • {n,m} 至少n次,至多m次

public class Spilt {
    public static void main(String[] args) {
        //限定符
        // "+"  至少1次
        split("apple orange","ap+");
        split("apple orange","appp+");
        // "*" 0次 1次 多次
        split("apple orange","ap*");
        split("apple orange","appp*");
        // "?" 至多1次
        split("apple orange","ap?");
        // {n} n为非负整数 匹配n次
        split("apple","p{2}");//pp
        split("apple","p{3}");//ppp
        split("apple","p{1}");//p
        // {n,} 至少匹配n次
        split("apple","p{2,}");//pp
        split("apple","p{3,}");//ppp
        split("apple","p{1,}");//p
        // {n,m} 至少n次,至多m次
        split("apple","p{1,2}");//p
        split("aple","p{2,3}");//pp
    }
    public static void split(String s,String regex){
        List<String> strings = Arrays.asList(s.split(regex));
        System.out.println(regex);
        print(strings);
    }
    public static void print(List<String> list){
        System.out.println("--------------");
        for(String s:list){
            System.out.println(s);
        }
        System.out.println("--------------");
    }
}

限定符

  • 限定符 ^(不是非!) $ \B \b
  • 行首 ^
  • 行尾 $
  • 单词边缘 \b
  • 非单词边缘 \B
		//split()方法看上文
		//限定符 ^(不是非!) $ \B \b
        split("apple","^apple");//^匹配行首
        split("apple","^pl");
        split("apple","e$");//$匹配行尾
        split("apple","l$");
        //单词边缘,即字母和空格的边缘
        split("apple orange","l\\b");//单词边缘
        split("apple orange","e\\b");
        split("apple orange","l\\B");//非单词边缘
        split("apple orange","e\\B");
        split("apple orange","\\B");
        split("apple orange","\\b");

其他

  • . 匹配到任何一个单字符
  • .* 任何一串单字符
  • 在*, +, ? 后面加 ?,可使贪婪型变为非贪婪的
  • 字符集合,匹配到[]中的任意一个
  • () 括号括住的是一个整体
		//split()方法看上文
		//. 匹配到任何一个单字符
        split("apple",".e");
        //.* 任何一串单字符
        split("apple>e>","p.*>");//贪婪型,匹配尽可能多
        
        //在* + ? 后面加 ?,可使贪婪型变为非贪婪的
        split("apple>e>","p.*?>");//非贪婪型,匹配尽可能少
        //字符集合 匹配到[]中的任意一个
        split("apple","[a]");
        split("apple","[^a]");
        split("apple","[aple]");
        split("apple","[a-p]");
        //() 被括住的是一个整体
        split("apple orange","(ap)+");
        split("apple orange","ap+");

(未完待续)

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!