教你从零开始学习java正则表达式

正则表达式

正则表达式你们应该都不陌生,我今天从零开始介绍我本身的学习经验和步骤!
字符组
在一对方括号 [ 和 ] 之间列出全部可能出现的字符,包括可见以及不可见的字符;例如:
[123]
表示能够匹配一、二、3的单个字符。java

1字符组的范围表示
若是能够匹配的字符有规律性而且范围比较大,好比0、一、二、三、四、五、六、七、八、9,表达式写成
[0123456789]
这样就显得复杂也不美观,因此引入符号“-”,使用 [x-y] 的形式表示在闭区间x到y范围内的字符,上式能够写成
[0-9]正则表达式

【注意】:-范围表示法必须遵循ASCII编码的前后顺序,即上式不可写做 [9-0] ,而一些使人困惑的表达式也尽可能不要使用,好比 [0-z] 由于该式涵盖了在ASCII编码表中从0到z的所有字符(不只仅只有数字和小写字母)。若是想要表示多个范围,好比匹配数字、大写字母和小写字母,表达式能够写做
[0-9a-zA-Z]编程

2元字符与转义
在表达式中有特殊功能而不做为字符的一部分字符,称为元字符。好比前文讲过的:[ ] - 都是元字符,若是想要恢复它们原本的字符属性就要作一些特殊处理。先看通常状况,取消元字符特殊含义的操做叫作转义,操做是在表达式中的元字符前加反斜杠 。特殊状况就是表示范围的横线 - ,当其紧邻左方括号 [ 时就做为普通字符处理,其余状况都做为元字符表示范围。编程语言

【注意】
一、横线 - 也支持反斜杠的转义,即[0-9]表示0、-、9三个字符。
二、右方括号 ] 不须要转义。ide

3排除型字符组
当须要表示的字符组范围很大,写起来不方便,而恰巧它的补集(全集指全部字符)方便表示,引出了排除型字符组[^…] ,表示在当前位置匹配一个没有列出的字符,请注意是“必须匹配一个没有出现的字符”,而不是“不要匹配列出的字符”。例如:学习

[^0-9][^0-9]
能够匹配“QQ”,但不能够匹配“Q”。编码

【注意】紧跟在 ^ 以后的 - 不是一个元字符!而^自身也是元字符,当且仅当^紧跟[时,不然表示它做为字符的含义。
4字符组简记法
常见的字符组简记法有\d([0-9])、\w([0-9a-zA-Z_])、\s([\t\r\n\v\f])code

【注意】w能够匹配下划线,不等价于[0-9a-zA-Z]。另外字符组简记法能够单独出现,也可使用在字符组中,如
[0-9a-zA-Z]能够写成[\da-zA-Z]
正则表达式也提供了上面三种经常使用简记法的排除型:\D、\W、\S,这三种分别对应各自的补集(全集是指全部字符,即[dD]能够匹配任意字符,剩余两者同理)。it

【再次注意】第一,使用字符组简记法最好不要出现单独的 - ;第二,上面描述的简记法都是针对ASCII编码而言的;第三,字符组简记法不止这三种,还有其余(也可能根据不一样的编程语言衍生出新的简记法),等遇到了再说。
5字符组的运算
当咱们所研究的问题要求咱们的全集不是全部字符,排除型字符组就显得不是那么的好用了。好比我须要匹配字母表第一、五、9个小写字母,把全部字符看做全集显然不合适,而把全部小写字母看做全集就比较合适,可是写成[b-df-hj-z]就比较复杂并且容易搞错,Java就容许使用逻辑与(&&,也能够理解为取交集)来解决这个问题,即写成:
[a-z]&&[^aei]
喜欢这样文章的能够关注我,我会持续更新,大家的关注是我更新的动力!须要更多java学习资料的也能够私信我!
祝关注个人人都:身体健康,财源广进,福如东海,寿比南山,早生贵子,从不掉发!学习资料

相关文章
相关标签/搜索