Merlin的魔力: 用新的正则表达式库解析字符序列[Java编程]
本文“Merlin的魔力: 用新的正则表达式库解析字符序列[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
解析情势的文本字符串
正则表达式是按照文本匹配情势的办法 ― 近似于编译器生成类文件的工作原理.编译器在源代码中查找各种情势以便将源代码表达式转换为字节码.通过辨认这些源代码情势,编译器可以只将有效的源代码表示转换为已编译的类文件.
什么是情势?
在正则表达式的上下文中,情势是字符序列的文本表示法.比方,假如您想知道一个字符序列中能否存在 car这个词,您会利用情势 car,因为这是切确地表示该字符串的办法.关于更复杂的情势,您可以利用特别字符作为占位符.假如您不是要搜索 car,而是想搜索以字母 c开首并以字母 r末尾的任何文本字符串,您会利用 c*r情势,此中 *代表第一个 r前的肆意多个字符. c*r情势将匹配任何故 c开首并以 r末尾的字符串,如 cougar、 cavalier或 chrysler.
若何指定情势表达式
情势匹配的主要部份是关于要利用什么样的表达式. Pattern 先保存要利用的表达式,然后将其传送给 Matcher 类以便在字符序列的上下文中查抄其匹配情形.比方,假如您想考证一个电子邮件地址,您大概要查抄用户输入能否与这样一个情势匹配 ― 它包含一个字母数字序列,后跟一个 @ 标记,@ 后又跟两组用句点离隔的字符.这可以用表达式 p{Alnum}+@w+.p{Alpha}{2,3} 来表示.(是的,这过于简化了电子邮件地址的构造,大概会解除某些有效的电子邮件地址,但它作为示例已经充足了.)
在谈论情势语言的具体细节之前,我们来细心看一下 p{Alnum}+@w+.p{Alpha}{2,3} . p{Alnum} 序列表示单个字母数字字符(A 到 Z、a 到 z 或 0 到 9). p{Alnum} 背面的加号(+)被称为 量词(quantifier).它被利用在表达式的前脸部份,表示 p{Alnum} 必须呈现一次或更多次.利用星号(*)表示要呈现零次或一次以上(含一次).@ 就是意味着它必须呈目前至少一个字母数字字符之后,这样整个情势匹配才能成功. w+ 与 p{Alnum}+ 近似,但增添了下划线(_).某些序列有多个表达式.反斜杠( .)代表句点.假如前面没有反斜杠,单独一个句点代表肆意字符.最后的 p{Alpha}{2, 3} 表示两个或三个字母字符.
只要学会了标准语言,您就可以掌握情势的全部奥秘.我们来看一些更常用的表达式的种类:
文字(Literal):表达式内任何不具有特别意义的字符都被看做是一个文字,并与自身匹配.
量词(Quantifier):某些字符或表达式,它们被用来计算一个文字或分组可以在字符序列中呈现的次数,以便该序列与表达式匹配.分组是由圆括号内的一组字符指定的.
? 表示呈现一次或根本不呈现
* 表示呈现零次或一次以上(含一次)
+ 表示呈现一次或多次
字符类(Character class):一个字符类就是方括号内的一个字符集,此中,匹配可以是括号内的肆意一个字符.您可以把字符类与量词结合在一同,比方, [acegikmoqsuwy]* 将是只包含字母表中奇数字母的肆意字符序列.某些字符类是预先定义的:
d ― 数字(0 到 9)
D -- 非数字
s -- 空白字符,如制表符或换行符
S -- 非空白字符
w -- 单字字符(a 到 z、A 到 Z、0 到 9 以及下划线)
W -- 非单字字符(别的肆意字符)
以上是“Merlin的魔力: 用新的正则表达式库解析字符序列[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |