Groovy笔记(5)_正则表达式

本文详细介绍了Groovy中的正则表达式使用方法,包括基本语法、元字符及辅助符号,并通过具体示例展示了如何在Groovy中进行模式匹配。
<p><span style="font-size: medium;"><strong>正则表达式</strong></span></p>
<p></p>
<p>1、正则表达式在Groovy中式本地语言级别的支持</p>
<p>2、def aRegex = ~'clat'</p>
<p> println aRegex.class //输出:class java.util.regex.Pattern</p>
<p> def mat =<span style="color: #ff0000;">'clat'=~'clat'</span></p>
<p>println mat.class //class java.util.regex.Matcher</p>
<p></p>
<p>结论:~开头的字符串是模式Pattern对象</p>
<p></p>
<p>3、assert 'clat' =~'cl'</p>
<p> assert !('clat'=~'al')</p>
<p> def regex = ~'cl'</p>
<p> assert 'clat' =~regex</p>
<p>assert !('clat' <span style="color: #ff0000;">==</span>~'cl') //精确匹配</p>
<p></p>
<p></p>
<p><span style="font-size: medium;"><strong>正则表达式的元字符</strong></span></p>
<p></p>
<ul>
<li>. 匹配任意单个字符</li>
<li>^ 匹配行的开始部分</li>
<li>$ 匹配行的末尾部分</li>
<li>* 匹配*前字符或正则表达式出现0或多次</li>
<li>+ 匹配+前字符或正则表达式出现1或多次</li>
<li>? 匹配?前字符或正则表达式出现0或1次</li>
<li>[] 匹配[]中字符集中任一字符,如[a-z0-9]</li>
<li>{} 限定次数,{3}固定3次,{1,4}最少1次,最多4次</li>
<li>/ 转义符 assert '$' ==~'//$' //需要重复反斜线符号</li>
<li>| “或”选择符 assert 'ten' ==~'t(a|e|i)n'</li>
<li>() 将封装的表达式组合起来 assert 'ababc' ==~'(ab)*c'</li>
</ul>
<p></p>
<p><span style="font-size: medium;"><strong>正则表达式的辅助符号</strong></span></p>
<p></p>
<ul>
<li>/d [0-9] 数字</li>
<li>/D [^0-9] 非数字</li>
<li>/w[a-zA-Z0-9] Word字符</li>
<li>/W[^a-zA-Z0-9]非Word字符</li>
<li>/s [/t/n/f/r/v] 空白字符</li>
<li>/S [^/t/n/f/r/v]非空白字符</li>
</ul>
<p></p>
<p><strong><span style="font-size: medium;">正则表达式补充</span></strong></p>
<p></p>
<p>1、在Java与Groovy中把 / 作为转义符会有冲突,所以一般适用 // 标示转义符</p>
<p> assert '1.2' ==~'//d//.//d'</p>
<p> assert '1 a' ==~'//d//s//w'</p>
<p></p>
<p>2、def datePattern = "([A-Z]{3})//s([0-9]{1,2}),//s([0-9]{4})"</p>
<p> def date = "NOV 28, 2008"</p>
<p> def matcher = date =~datePattern</p>
<p> matcher.<span style="color: #ff0000;">matches</span>() //判断是否匹配</p>
<p></p>
<p> assert date =~datePattern //无断言错误</p>
<ul>
<li>println matcher[0] //['NOV 28, 2008','NOV','28','2008']</li>
<li>println matcher[0][0] // NOV 28, 2008</li>
<li>println matcher[0][1] //NOV</li>
<li>println matcher[0][2] //28</li>
<li>println matcher[0][3]//2008</li>
</ul>
<p></p>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值