加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Groovy笔记(5)_正则表达式

发布时间:2020-12-14 17:06:33 所属栏目:大数据 来源:网络整理
导读:正则表达式 ? 1、正则表达式在Groovy中式本地语言级别的支持 2、def aRegex = ~'clat' ???? println aRegex.class???????????????? //输出:class? java.util.regex.Pattern ???? def mat = 'clat'=~'clat' ?????println mat.class?????????????????????? //c

正则表达式

?

1、正则表达式在Groovy中式本地语言级别的支持

2、def aRegex = ~'clat'

???? println aRegex.class???????????????? //输出:class? java.util.regex.Pattern

???? def mat ='clat'=~'clat'

?????println mat.class?????????????????????? //class java.util.regex.Matcher

?

结论:~开头的字符串是模式Pattern对象

?

3、assert 'clat' =~'cl'

???? assert !('clat'=~'al')

???? def regex = ~'cl'

???? assert 'clat' =~regex

?????assert !('clat' ==~'cl')? //精确匹配

?

?

正则表达式的元字符

?

  • .??????????????? 匹配任意单个字符
  • ^?????????????? 匹配行的开始部分
  • $?????????????? 匹配行的末尾部分
  • *?????????????? 匹配*前字符或正则表达式出现0或多次
  • +?????????????? 匹配+前字符或正则表达式出现1或多次
  • ?????????????? 匹配?前字符或正则表达式出现0或1次
  • []????????????? 匹配[]中字符集中任一字符,如[a-z0-9]
  • {}???????????? 限定次数,{3}固定3次,{1,4}最少1次,最多4次
  • /?????????????? 转义符 assert '$' ==~'//$' //需要重复反斜线符号
  • |??????????????? “或”选择符?? assert 'ten' ==~'t(a|e|i)n'
  • ()????????????? 将封装的表达式组合起来?? assert 'ababc' ==~'(ab)*c'

?

正则表达式的辅助符号

?

  • /d????????????? [0-9]?????????? 数字
  • /D????????????? [^0-9]??????? 非数字
  • /w?????????????[a-zA-Z0-9] Word字符
  • /W????????????[^a-zA-Z0-9]非Word字符
  • /s????????????? [/t/n/f/r/v]? 空白字符
  • /S????????????? [^/t/n/f/r/v]非空白字符

?

正则表达式补充

?

1、在Java与Groovy中把 / 作为转义符会有冲突,所以一般适用 // 标示转义符

???? assert '1.2' ==~'//d//.//d'

???? assert '1 a' ==~'//d//s//w'

?

2、def datePattern = "([A-Z]{3})//s([0-9]{1,2}),//s([0-9]{4})"

???? def date = "NOV 28,2008"

???? def matcher = date =~datePattern

???? matcher.matches()?? //判断是否匹配

?

???? assert date =~datePattern??? //无断言错误

  • println matcher[0]????????? //['NOV 28,2008','NOV','28','2008']
  • println matcher[0][0]????? // NOV 28,2008
  • println matcher[0][1]????? //NOV
  • println matcher[0][2]????? //28
  • println matcher[0][3]??????//2008

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读