加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Groovy Tip 19 正则表达式 二

发布时间:2020-12-14 16:58:14 所属栏目:大数据 来源:网络整理
导读:???????????????????????????? Groovy Tip 19 正则表达式 二 ? ? 我们在前一篇的《正则表达式》中重点谈到了 Groovy 语言的一些重要的通配符,可以说那些通配符是一些标准的和基础的通配符。看过了那些通配符以后,我就常常在想, Groovy 语言作为一种敏捷性

???????????????????????????? Groovy Tip 19 正则表达式

?

?

我们在前一篇的《正则表达式》中重点谈到了Groovy语言的一些重要的通配符,可以说那些通配符是一些标准的和基础的通配符。看过了那些通配符以后,我就常常在想,Groovy语言作为一种敏捷性的动态语言,会不会有一些更为方便的通配符呢?

如我们所愿,Groovy语言为我们提供了如下的一些更为简便的通配符:

?

/d???????????????? ?数字字符

/D???????????????? 非数字字符

/s????????????????? 空格符

/S?? ???????????????非空格符

/w????????????????? 文字字符

/W????????????????? 非文字字符

/b?????????????????? 单词标记

^??????????????????? 语句行的开头

$??????????????????? 语句行的结尾

?

?

?

可以看到,这些通配符正是在以前通配符的基础上,对一些常用的正则表达式做进一步的通配,以达到简化我们编码的目的。下面试举几个例子来看看这些通配符的用法。

?

通配符“/d”就是对数字字符的通配,比如:

?

??? ? def str3 = '3'

??? ?

??? ? println str3 ==~ //d/

?

就打印“true”,而

?

?

?????? def str8 = 'a'

??????

?????? println str8 ==~ //d/

?

就打印“false”。

我们在前一篇的《正则表达式》中有一个匹配数字的例子,是这样的:

def str = '1000.31'

def re = /[0-9]+(/.[0-9]+)?/

println str ==~ re

?

这个正则表达式就有点长了,我们现在使用“/d”通配符就可以把上面的正则表达式简化成下面的样子:

?

?????? def re = //d+(/./d+)?/

?????????????

?????? def str = 1000.31

??????

?????? println str ==~ re

?

?

?

而“/D”匹配的则是非数字,如:

?

??? ?

??? ? def str4 = 'w'

??? ?

? println str4 ==~ //D/

?

/s”匹配的是空格,如:

??????

?????? println '? ' ==~ //s+/

?

所有非空格的通配符则是“/S”。

/w”匹配的是单词的字母,相当于“/[a-zA-Z]/”,如:

??? ?

??? ? def str1 = 'a'

??? ?

? println str1 ==~ //w/

?

而所有的非单词字母符号的通配符为“/W”,如:

?

??? ? def str5 = '&'

??? ?

? println str5 ==~ //W/

?

/b”指的是单词标记,如:

?

?????? def hw = 'hello'

??????

?????? println hw ==~ //b/w+/b/

?

以“ed”结尾的过去式的匹配为:

?

?????? def word = 'moved'

??????

?????? println word ==~ //b/w+ed/b/

???

而下面的例子则不匹配:

?

?????? def w1 = 'ran'

??????

?????? println w1 ==~ //b/w+ed/b/

?

?

而“^”则注意要跟“[^]”区别开来,“^”表示以什么开头,而“[^]”则表示非。如下面所示的例子。

下面的例子表示非abc三个字母的所有符号:

?

?????? println 'f' ==~ /[^abc]/

?

下面的例子则不匹配:

?

?????? println 'b' ==~ /[^abc]/

?

???

而下面的例子则表示以“abc”开头的匹配:

?

??? println 'abcd' ==~ /^abc./

?

而下面的例子却不匹配:

?

??? println 'adcd' ==~ /^abc./

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读