您的位置:首页 > 编程语言 > Java开发

java正则表达式学习笔记

2014-02-12 14:34 381 查看
/**

regular expression 正则表达式:用来匹配字符串的模板,简单的讲,任意字符串,包括诸如"abc"这样的字符串常量都是正则表达式

只是"abc"这样的正则表达式只能匹配它本身,实际中没有什么意义.可以将正则表达式看成包含特殊字符的字符串

正则表达式中的特殊字符(具有特殊含义的字符):

():标记子表达式的开始和结束.

*:表示前面的子表达式可以出现零次或多次.

+:表示前面的子表达式可以出现一次或多次.

?:表示前面的子表达式可以出现零次或一次.

.:可以匹配除换行符\n之外的任何单个字符

\:转义字符

|:表示选项之间任选一项

正则表达式中的通配符:

.:可以匹配除换行符\n之外的任何单个字符

\d:匹配0~9所有数字

\D:匹配非数字

\s:匹配所有空白字符

\S:匹配非空白字符

\w:匹配所有单词字符,包括0~9数字,26个英文字符,下划线

\W:匹配所有非单词字符

方括号表达式的作用:

表示枚举:例如:[abc]表示a,b,c其中任意一个字符

表示范围:例如:[a-f]表示a~f范围内的任意一个字符,[\u0061-\u007f]表示unicode编码为0061~007f之间的字符

表示求否:例如[^abc]

表示与运算&&:例如:[a-z && ^bc]表示a~z范围内除b,c以外的字符.

圆括号表达式用来将多个表达式组成一个子表达式,圆括号中可以使用或运算符(|)例如:(private|protected|public)正则表达式式用来匹配

java三个访问权限控制符之一

数量标识符

X*:表示X表达式出现零次或多次.

X+:表示X表达式出现一次或多次.

X?:表示X表达式出现零次或一次.

X{n}:表示X表达式出现n次

X{n,}:表示X表达式至少出现n次

X{n,m}:表示X表达式至少出现n次,至多出现m次

*/

测试代码

import java.util.regex.*;

import java.util.*;

public class PatternTest

{

    public static void main(String[] args)

    {

        

        /**验证字符串常量也是正则表达式,该正则表达式仅能匹配它自身*/

        System.out.println("1: " + "china".matches("china"));/*可以看到打印为true.由此可看出字符串常量也是正则表达式。*/

        

        /** \uffff表示unicode编码为16进制ffff的字符,比如'\u0061'表示字符'a' */

        System.out.println("2: " + "\u0061");

        

        

        /**验证方括号表达式的作用*/

        System.out.println("3: " + "z".matches("[a-c,h-i]"));/*输出为false*/

        System.out.println("3: " + "a".matches("[a,b,c]"));/*输出为true*/

        System.out.println("3: " + "a".matches("[^abc]"));/*输出为false*/

        

        System.out.println("4: " + "35a".matches("\\d\\d."));/*输出为true \\d\\d.匹配第一第二个字符为数字第三个为任意字符的字符串*/

        

        

        System.out.println("5: " + "hello world!".replaceFirst("\\w*","#" ));

        System.out.println("5: " + "hello world!".replaceFirst("\\w*?","#" ));

        

        System.out.println("8: " + "@美人:私聊吧".matches("@[^:]+:.+" ));

        

        System.out.println("9: " + "@美女:私聊".split("[:|:]")[0]);

        

        System.out.println("9: " + "@美女:私聊".split("[:|:]")[0]);

        

        /**将正则表达式编译成模板pattern*/

        //String regex = "[a-z_]\\w*"; /*定义一个正则表达式式用来判断标识符是否合法 假设标识符命名规则如下:1以小写字符或下划线开头,只能采用数字,26个英文字符,和下划线*/

        String regex = "\\w+";

        Pattern pattern = Pattern.compile(regex);

        

        Matcher match = pattern.matcher("java is very easy");

        System.out.println("6:  "+ match.matches());

    

        int i = 0;

        while(match.find(i))

        {

            System.out.println(match.group());

            i = match.end();

        }

        

        Pattern pattern2 = Pattern.compile(" +");

        String[] strs = pattern2.split("java is   very  easy", 4);

        for(String s : strs)

        {

            System.out.println(s);

        }

        

        

    }

    

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: