您好,登录后才能下订单哦!
这篇文章给大家分享的是有关java正则表达式的使用方法。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。
字符组
在一对方括号 [ 和 ] 之间列出所有可能出现的字符,包括可见以及不可见的字符;例如:
[123]
表示可以匹配1、2、3的单个字符。
1字符组的范围表示
如果可以匹配的字符有规律性并且范围比较大,比如0、1、2、3、4、5、6、7、8、9,表达式写成
[0123456789]
这样就显得复杂也不美观,所以引入符号“-”,使用 [x-y] 的形式表示在闭区间x到y范围内的字符,上式可以写成
[0-9]
【注意】:-范围表示法必须遵循ASCII编码的先后顺序,即上式不可写作 [9-0] ,而一些令人困惑的表达式也尽量不要使用,比如 [0-z] 因为该式涵盖了在ASCII编码表中从0到z的全部字符(不仅仅只有数字和小写字母)。如果想要表示多个范围,比如匹配数字、大写字母和小写字母,表达式可以写作
[0-9a-zA-Z]
2元字符与转义
在表达式中有特殊功能而不作为字符的一部分字符,称为元字符。比如前文讲过的:[ ] - 都是元字符,如果想要恢复它们本来的字符属性就要做一些特殊处理。先看一般情况,取消元字符特殊含义的操作叫做转义,操作是在表达式中的元字符前加反斜杠 。特殊情况就是表示范围的横线 - ,当其紧邻左方括号 [ 时就作为普通字符处理,其他情况都作为元字符表示范围。
【注意】
1、横线 - 也支持反斜杠的转义,即[0-9]表示0、-、9三个字符。
2、右方括号 ] 不需要转义。
3排除型字符组
当需要表示的字符组范围很大,写起来不方便,而恰巧它的补集(全集指所有字符)方便表示,引出了排除型字符组[^…] ,表示在当前位置匹配一个没有列出的字符,请注意是“必须匹配一个没有出现的字符”,而不是“不要匹配列出的字符”。例如:
[^0-9][^0-9]
可以匹配“QQ”,但不可以匹配“Q”。
【注意】紧跟在 ^ 之后的 - 不是一个元字符!而^自身也是元字符,当且仅当^紧跟[时,否则表示它作为字符的含义。
4字符组简记法
常见的字符组简记法有\d([0-9])、\w([0-9a-zA-Z_])、\s([\t\r\n\v\f])
【注意】w可以匹配下划线,不等价于[0-9a-zA-Z]。另外字符组简记法可以单独出现,也可以使用在字符组中,如[0-9a-zA-Z]
可以写成[\da-zA-Z]
正则表达式也提供了上面三种常用简记法的排除型:\D、\W、\S,这三种分别对应各自的补集(全集是指所有字符,即[dD]可以匹配任意字符,剩余二者同理)。
【再次注意】第一,使用字符组简记法最好不要出现单独的 - ;第二,上面描述的简记法都是针对ASCII编码而言的;第三,字符组简记法不止这三种,还有其他(也可能根据不同的编程语言衍生出新的简记法),等遇到了再说。
5字符组的运算
当我们所研究的问题要求我们的全集不是所有字符,排除型字符组就显得不是那么的好用了。比如我需要匹配字母表第1、5、9个小写字母,把所有字符看作全集显然不合适,而把所有小写字母看作全集就比较合适,但是写成[b-df-hj-z]就比较复杂而且容易搞错,Java就允许使用逻辑与(&&,也可以理解为取交集)来解决这个问题,即写成:
[a-z]&&[^aei]
看完上述内容,你们对java正则表达式有进一步的了解吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。