利用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"]

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值