`
tongyi121
  • 浏览: 40603 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

利用Groovy的正则表达式处理字符串

阅读更多

常用的正则表达式

匹配意义 表达式 等价符号
数字 \d [0-9]
非数字 \D [^0-9]
word字符 \w [a-zA-Z0-9]
非word字符 \W [^a-zA-Z0-9]
空白字符 \s [\t\n\f\r\v]
非空白字符 \S [^\s]
汉字 [\u4E00-\u9FA5]
非汉字 [^\u4E00-\u9FA5]

 

     学习java已经两年一直都没搞懂java的正则表达式,每次学一点就会发困,感觉非常费劲。但在学习Groovy的过程中,还是很轻松的搞懂了正则表达式的一些皮毛。(惊叹Groovy真是Groovy)

    Groovy同样提供了3种方便的运算符

• 匹配操作符 (==~)
• 查找操作符 (=~)
• 模式操作符 (~string)

 

匹配操作符 (==~)

主要用于检查字符串是否匹配 返回true或false

 

assert "abc" ==~ /abc/
assert "abc" ==~ ".*c\$"

 查找操作符 (=~)

经常在复制网页上的网页时,发现复制的代码左边有数字序号,如果代码长的话自己动手去掉前面的序号也很费劲.利用下面的代码可以将所有的数字都去掉

def code = """01 import groovy.text.SimpleTemplateEngine
02
03 /**
04 * Simple User Groovy Bean.
05 */
06 class User {
07 String firstName;
08 String lastName;
09 }
10
11 def emailTemplate = this.class.getResource("nightlyReportsEmail.gtpl")
12 def binding = [
13 "user": new User(firstName: "Christopher", lastName: "Judd"),
14 "date": new Date()
15 ]
16 def engine = new SimpleTemplateEngine()
17 def email = engine.createTemplate(emailTemplate).make(binding)
18 def body = email.toString()
19
20 println body"""
def matcher = code =~ /\d/

def newCode = matcher.replaceAll('')
println newCode

 

    以前做项目的时候,由于项目中需要将ocr识别的文字存入数据库,发现由于一些特殊字符导致插入数据库出现异常,以前一直想使用正则表达式进行过滤,就是不得其门而入

def sso = /‘’Groovy正则表达式0-9;[]‘;“;';过滤标点符号/
def matcher = sso =~ /['’‘;“”!!;\]\[]/  //可以加入任何需要过滤的特殊字符(注意有的需要转义)
def newS = matcher.replaceAll('')
println newS

//result:Groovy正则表达式0-9过滤标点符号

如果只想留下汉字的话,可以将上面的matcher改为/[^\u4E00-\u9FA5]/

模式操作符(~string)

运用该运算符将string定义为pattern(java.util.regex.Pattern),并运用这个pattern可以做到检索一个字符串中出现符合该pattern的string。(语言组织不好,还是看例子清楚点)

def saying = """Now is the time for all good men (and women) to come to the aid
of their country"""
def pattern = ~/(\w+en)/
def matcher = pattern.matcher(saying)
def count = matcher.getCount()
println "Matches = ${count}"
for(i in 0..<count) {
    println matcher[i]
}

result:
Matches = 2
["men", "men"]
["women", "women"]

 

 

 

 

 

 

分享到:
评论
3 楼 copoplar 2009-01-14  
正准备研究一下,学习了。
2 楼 RayChase 2008-10-27  
Groovy的在语言级支持正则表达式,这在传统语言中是见不到的。
1 楼 agile_boy 2008-10-21  
不错,有自己的心得

相关推荐

    groovy正则表达式基础1

    【Groovy正则表达式基础1】 Groovy是一种基于Java平台的动态编程语言,它扩展了Java的功能,包括对正则表达式的处理。在Groovy中,正则表达式是通过`~`运算符或者使用斜杠(`/`)来定义的。这种特性使得Groovy在处理...

    我收集的groovy 正则表达式参考

    ### Groovy正则表达式详解 #### 一、引言 在编程领域中,正则表达式(Regular Expressions)是一种强大的文本处理工具,被广泛应用于字符串搜索与替换等操作中。Groovy作为一种灵活的脚本语言,在处理文本时尤其...

    groovy正则表达式使用1

    ### Groovy正则表达式详解 #### 一、Groovy正则表达式的定义与使用 在Groovy中,正则表达式(Regular Expression)是一种强大的工具,用于处理文本中的模式匹配、查找、替换等操作。Groovy支持多种方式定义正则...

    [Groovy入门]第四讲.数据搜索功能与正则表达式

    在Groovy中,可以使用`=~`运算符将字符串与正则表达式进行匹配,返回一个匹配结果的Matcher对象。例如: ```groovy def text = 'Hello, Groovy!' def matchResult = text =~ /Groovy/i // 使用/i忽略大小写 if ...

    groovy代码-测试正则表达式

    在Groovy中,正则表达式是用于处理字符串的强大工具,可以用来进行模式匹配、查找、替换等各种文本操作。在这个“groovy代码-测试正则表达式”的主题中,我们将深入探讨Groovy中的正则表达式使用及其相关知识点。 1...

    Groovy语法系列教程之字符串(三).pdf

    在Groovy中处理字符串时,开发者可以利用其内建的字符串处理功能来提高代码的可读性和简洁性。例如,Groovy允许在字符串中直接进行表达式插值,从而省去了在字符串外部定义变量和进行字符串连接操作的需要。这种做法...

    Jenkins高级篇之Pipeline实践篇-2-groovy中字符串操作split()和tokenize()区别.rar

    `separator`参数可以是字符串或正则表达式,与`split()`类似。但是,`tokenize()`有以下几点不同: 1. **不包含分隔符**:`tokenize()`不会将分隔符包含在结果数组中,而`split()`会包含。 2. **处理连续分隔符**:...

    groovy文档

    Groovy中的字符串处理非常强大,支持多种格式,包括普通的双引号字符串、单引号字符串、GString以及正则表达式字符串。其中,GString是Groovy特有的,允许在字符串中嵌入变量和表达式,极大地简化了字符串操作。此外...

    groovy基础语法.pdf

    Groovy内置了对正则表达式的支持,提供了大量的方法来匹配、查找和替换字符串中的模式。 异常处理: Groovy中的异常处理与Java类似,可以使用try-catch-finally语句块来捕获和处理异常。Groovy还提供了一些便捷的...

    The Groovy 2 Tutorial(LeanPub)

    17. **运算符**:Groovy支持多种运算符,如算术运算符、条件运算符、字符串运算符、正则表达式运算符、集合运算符和对象运算符等。运算符重载、位运算符和复合赋值运算符也是重点。 18. **赋值运算符**:Groovy的...

    Groovy学习笔记

    - **字符串处理**: Groovy提供了丰富的字符串处理功能,包括格式化字符串、字符串替换等。 - **集合操作**: 支持多种集合类型,如列表(List)和映射(Map),并提供了便捷的操作方法。 - **类和闭包**: Groovy支持面向...

    研究精通Groovy

    - **内置正则表达式**:Groovy内置了对正则表达式的强大支持,无需导入额外库即可实现文本匹配和替换等操作,简化了字符串处理的复杂度。 - **闭包**:闭包是Groovy中一个非常强大的特性,允许函数作为第一类公民,...

    精通 Groovy 中文教程

    - Groovy内置了强大的正则表达式支持,可以直接在字符串中使用匹配模式。 - 这大大简化了文本处理任务。 **闭包**: - 闭包是Groovy中一种重要的概念,它是带有上下文环境的函数,可以访问定义时所在的外部作用域...

    groovy。。。。。。。。。。。。。。

    4. **字符串和正则表达式**:Groovy提供了多种字符串操作方式,如GString(内插字符串)和多行字符串。正则表达式的支持让字符串处理更为强大。 5. **集合与数组**:Groovy支持List、Set和Map等集合类型,并且提供...

    Groovy.in.Action.2nd.Edition.pdf

    - GStrings和多行正则表达式,大大简化了字符串操作和正则表达式处理。 - Elvis操作符(?:),提供了一个简洁的方式来处理可能为null的表达式。 - 安全的属性访问操作符(?.),允许在访问对象属性或调用方法前进行...

    groovy in action 中文版 2017.11

    在字符串处理方面,Groovy引入了GString,这种字符串可以包含表达式,能够在运行时被评估。同时,Groovy还引入了对正则表达式的支持,使得文本模式匹配和处理更加方便。 在集合类型方面,Groovy支持使用范围...

Global site tag (gtag.js) - Google Analytics