正则表达式解析
正则表达式,又称正规表达式,常规表达式,是使用单个字符串来描述.匹配一系列符合某个句法规则的字符串,在很多文本编辑器中,正则表达式通常被用来检索.替换那些符合某个模式的文本. 正则表达式的语法可以自行搜索,通常分为一下几个方面: 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对象可以调用相关方法进行匹配和替换. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |