`
chenzihong_cyd
  • 浏览: 16011 次
  • 性别: Icon_minigender_1
  • 来自: 昆明
社区版块
存档分类
最新评论
  • a90830: 兄弟,十分感谢!  您帮到我了  我跟你的情况一模一样,我也写 ...
    tapestry

Groovy正则表达式用法--c处理字符串

阅读更多
利用Groovy的正则表达式处理字符串
关键字: 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



Java代码
assert "abc" ==~ /abc/  
assert "abc" ==~ ".*c\$" 

assert "abc" ==~ /abc/
assert "abc" ==~ ".*c\$" 查找操作符 (=~)

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

Java代码
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 

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识别的文字存入数据库,发现由于一些特殊字符导致插入数据库出现异常,以前一直想使用正则表达式进行过滤,就是不得其门而入

Java代码
def sso = /‘’Groovy正则表达式0-9;[]‘;“;';过滤标点符号/  
def matcher = sso =~ /['’‘;“”!!;\]\[]/  //可以加入任何需要过滤的特殊字符(注意有的需要转义)  
def newS = matcher.replaceAll('')  
println newS  
 
//result:Groovy正则表达式0-9过滤标点符号  
 
如果只想留下汉字的话,可以将上面的matcher改为/[^\u4E00-\u9FA5]/ 

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。(语言组织不好,还是看例子清楚点)

Java代码
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"] 
分享到:
评论

相关推荐

    groovy正则表达式基础1

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

    groovy正则表达式使用1

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

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

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

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

    Groovy中的高级正则表达式用法 - **预编译正则表达式**:使用`Pattern.compile()`方法可以预先编译正则表达式,提高匹配性能。 - **替换操作**:`replace()`和`replaceAll()`方法可以替换匹配的字符串。 - **分组...

    groovy代码-测试正则表达式

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

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

    与`split()`相比,`tokenize()`是Groovy特有的方法,它同样用于字符串分割,但在处理某些情况时更加灵活。`tokenize()`的基本语法是: ```groovy String.tokenize(separator) ``` `separator`参数可以是字符串或...

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

    此外,Groovy对多行字符串的支持,使得编写多行文本和消息时更为方便,无需使用多个加号(+)连接字符串,也不需要手动处理字符串中的换行符。通过使用stripMargin()和stripIndent()等方法,还可以轻松地去除字符串...

    Groovy学习笔记

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

    Groovy and Grails Recipes(清晰PDF)

    - Groovy的基本数据类型(如数字、字符串等) - 集合数据结构(列表、集合、映射等) - 控制结构(条件语句、循环等) **4. Object-Oriented Groovy** - **介绍**: 讨论了如何在Groovy中实现面向对象编程。 - *...

    精通 Groovy 中文教程

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

    groovy基础语法.pdf

    - 字符串插值和正则表达式的使用,如`println("Mynameis${name}")`和`'groovy'.contains('oo')`; - if-else和switch语句的Groovy实现; - for循环和范围操作的使用,如`for(iin0..9){x+=i}`; - 使用断言`assert`来...

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

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

    groovy文档

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

    The Groovy 2 Tutorial(LeanPub)

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

    Groovy Language Documentation Version 2.5.5

    - 字符串(Strings):Groovy提供了多种字符串字面量,包括单引号字符串、三单引号字符串、双引号字符串以及它们的插值、转义和Unicode序列等。 - 数字(Numbers):Groovy支持整数、二进制、八进制、十六进制和十...

    Groovy入门

    - **正则表达式**:使用 `~` 符号定义,例如 `~/\b[A-Z]+\b/` 定义了一个匹配大写字母开头的单词的正则表达式。 - `=~` 和 `==~` 分别对应于 `matcher.find()` 和 `matcher.match()` 方法。 - 可以直接通过索引来...

    Z2-Groovy in Action.pdf

    关于正则表达式和数字的操作也是Groovy数据处理中的亮点,它们让文本处理和数学运算变得更加简单和强大。 整体而言,Groovy作为一种语言,它的设计目标是提供一种既能够利用Java平台强大的生态系统,又能够提供动态...

Global site tag (gtag.js) - Google Analytics