利用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是一种基于Java平台的动态编程语言,它扩展了Java的功能,包括对正则表达式的处理。在Groovy中,正则表达式是通过`~`运算符或者使用斜杠(`/`)来定义的。这种特性使得Groovy在处理...
#### 一、Groovy正则表达式的定义与使用 在Groovy中,正则表达式(Regular Expression)是一种强大的工具,用于处理文本中的模式匹配、查找、替换等操作。Groovy支持多种方式定义正则表达式,包括通过双斜线`//`、...
### Groovy正则表达式详解 #### 一、引言 在编程领域中,正则表达式(Regular Expressions)是一种强大的文本处理工具,被广泛应用于字符串搜索与替换等操作中。Groovy作为一种灵活的脚本语言,在处理文本时尤其...
Groovy中的高级正则表达式用法 - **预编译正则表达式**:使用`Pattern.compile()`方法可以预先编译正则表达式,提高匹配性能。 - **替换操作**:`replace()`和`replaceAll()`方法可以替换匹配的字符串。 - **分组...
在Groovy中,正则表达式是用于处理字符串的强大工具,可以用来进行模式匹配、查找、替换等各种文本操作。在这个“groovy代码-测试正则表达式”的主题中,我们将深入探讨Groovy中的正则表达式使用及其相关知识点。 1...
与`split()`相比,`tokenize()`是Groovy特有的方法,它同样用于字符串分割,但在处理某些情况时更加灵活。`tokenize()`的基本语法是: ```groovy String.tokenize(separator) ``` `separator`参数可以是字符串或...
此外,Groovy对多行字符串的支持,使得编写多行文本和消息时更为方便,无需使用多个加号(+)连接字符串,也不需要手动处理字符串中的换行符。通过使用stripMargin()和stripIndent()等方法,还可以轻松地去除字符串...
- **字符串处理**: Groovy提供了丰富的字符串处理功能,包括格式化字符串、字符串替换等。 - **集合操作**: 支持多种集合类型,如列表(List)和映射(Map),并提供了便捷的操作方法。 - **类和闭包**: Groovy支持面向...
- Groovy的基本数据类型(如数字、字符串等) - 集合数据结构(列表、集合、映射等) - 控制结构(条件语句、循环等) **4. Object-Oriented Groovy** - **介绍**: 讨论了如何在Groovy中实现面向对象编程。 - *...
- Groovy内置了强大的正则表达式支持,可以直接在字符串中使用匹配模式。 - 这大大简化了文本处理任务。 **闭包**: - 闭包是Groovy中一种重要的概念,它是带有上下文环境的函数,可以访问定义时所在的外部作用域...
- 字符串插值和正则表达式的使用,如`println("Mynameis${name}")`和`'groovy'.contains('oo')`; - if-else和switch语句的Groovy实现; - for循环和范围操作的使用,如`for(iin0..9){x+=i}`; - 使用断言`assert`来...
- GStrings和多行正则表达式,大大简化了字符串操作和正则表达式处理。 - Elvis操作符(?:),提供了一个简洁的方式来处理可能为null的表达式。 - 安全的属性访问操作符(?.),允许在访问对象属性或调用方法前进行...
Groovy中的字符串处理非常强大,支持多种格式,包括普通的双引号字符串、单引号字符串、GString以及正则表达式字符串。其中,GString是Groovy特有的,允许在字符串中嵌入变量和表达式,极大地简化了字符串操作。此外...
17. **运算符**:Groovy支持多种运算符,如算术运算符、条件运算符、字符串运算符、正则表达式运算符、集合运算符和对象运算符等。运算符重载、位运算符和复合赋值运算符也是重点。 18. **赋值运算符**:Groovy的...
- 字符串(Strings):Groovy提供了多种字符串字面量,包括单引号字符串、三单引号字符串、双引号字符串以及它们的插值、转义和Unicode序列等。 - 数字(Numbers):Groovy支持整数、二进制、八进制、十六进制和十...
- **正则表达式**:使用 `~` 符号定义,例如 `~/\b[A-Z]+\b/` 定义了一个匹配大写字母开头的单词的正则表达式。 - `=~` 和 `==~` 分别对应于 `matcher.find()` 和 `matcher.match()` 方法。 - 可以直接通过索引来...
关于正则表达式和数字的操作也是Groovy数据处理中的亮点,它们让文本处理和数学运算变得更加简单和强大。 整体而言,Groovy作为一种语言,它的设计目标是提供一种既能够利用Java平台强大的生态系统,又能够提供动态...