正则表达式解析

来源:互联网 发布:天通银哪个软件 编辑:程序博客网 时间:2024/05/17 09:27

      正则表达式,又称正规表达式,常规表达式,是使用单个字符串来描述.匹配一系列符合某个句法规则的字符串,在很多文本编辑器中,正则表达式通常被用来检索.替换那些符合某个模式的文本.

       正则表达式的语法可以自行搜索,通常分为一下几个方面:

                      1>字符

                     可以使用普通字符匹配,例"a"

                     使用预定义字符表示给定范围中的某个字符,"\d"表示匹配0~9中的任意一个数字字符.

                     使用 [ ] 给出自定义的范围,[a-z0-9]表示匹配a~z或数字0~9的某一个字符.

              2>量词

                      有时候需要指定某个字符或组可以出现的次数,这时就要使用量词

                      "*" 表示指定的字符或组可以出现任意的次数(包括不出现)

                      "+" 表示指定的字符或组至少要出现一次

                      "?" 表示指定的字符或组最多出现一次,或者根本就没有.

                      "{n}", "{m,n}", "{n,}" 表示指定的字符或组必须出现n次,可以出现m~n次,最少出现n次,例"c{3}a{2-3}"表示由三个c开头后面跟2个或3个a.

              3>边界符

                        进行匹配时,边界符不会匹配任何字符,只代表边界.不可以将边界符理解为不可见字符,不可见字符是有内容的只是不可见而已;边界符不对任何字符匹配,只代表某个临界点

                     " ^ " 与" $ "分别表示的是字符串开始和结束的位置,一般用来匹配整个字符串. 例"^a*$"表示任意个a组成的字符串

                     " \b "表示的是单词的边缘,在要求匹配的内容是整个单词而不是单词的一部分时,\b就派上用场了

              4>匹配次数的贪婪与非贪婪

                        贪婪模式下进行匹配时,将按照最大限度的可能进行匹配.

                        非贪婪模式是在匹配时按照最小限度的可能进行匹配

                         对abbbabbba进行匹配时,  " a[\w]+a"匹配时会按照贪婪模式进行匹配,结果为;abbbabbba    " a[\w]+?a"则会按照非贪婪模式进行匹配,结果为:abbba

             5>分组以及分组引用

                        ( ) 和 " \n "可以进行分组

      Pattern与Matcher类:

            Pattern类的对象用来表示通过编译的正则表达式,利用该类对象可以与任意字符串进行模式匹配( Pattern类的构造器是private的,不能通过调用构造器创建对象,需要调用Pattern类提供的静态工厂方法获得对象  pattern = Pattern.compile("(ab)+",Pattern.CASE_INSENSITIVE+Pattern.UNICODE_CASE); Pattern中有许多标志常量,多个标志常量可用+进行连接)

           Matcher类,该类对象表示将要进行模式匹配的字符串或字符序列,同样,Matcher类对象夜不能通过调用构造器获得,需要通过Pattern对象中的matcher方法得到.有了Matcher对象可以调用相关方法进行匹配和替换.







0 0
原创粉丝点击