Groovy Tip 19 正则表达式 二

                             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./

 

 

Groovy是一种基于JVM的敏捷开发语言,它在Java的基础上添加了许多有用的特性,其中包括对正则表达式的支持。Groovy正则表达式功能非常强大,并且使用起来非常简洁。 在Groovy中使用正则表达式与在Java中有所不同,Groovy提供了更加流畅的语法。以下是一些Groovy正则表达式的特点和用法: 1. 字符串的`findAll`和`find`方法可以用来查找匹配正则表达式的子字符串。 - `findAll`方法返回所有匹配的子字符串列表。 - `find`方法返回第一个匹配的子字符串。 2. 使用`~`操作符可以创建一个`Pattern`对象,允许你直接使用正则表达式语法。 3. Groovy中的正则表达式支持原生字符串,意味着你可以直接写正则表达式而不需要转义。 4. 在Groovy正则表达式中,可以使用`~>`和`<~`来分别表示正向和反向查找。 5. 在正则表达式后可以添加`as`子句来指定匹配到的数据应该被解析为特定类型的列表。 6. 可以直接对字符串应用正则表达式模式匹配,并且匹配结果会自动被解包为相应的变量。 下面是一些Groovy正则表达式的简单示例: ```groovy // 查找字符串中所有匹配的数字 def text = "Here are numbers: 123, 456, 789." def numbers = text.findAll(/\d+/) println numbers // 输出: [123, 456, 789] // 使用正则表达式匹配并解析数据 def result = text =~ /(\d+)/ result.each { println it[0] } // 使用as子句解析匹配结果为整数列表 def numbersParsed = text.findAll(/\d+/) as List<Integer> println numbersParsed ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值