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

正则表达式

 

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

相关文章

背景:    8月29日,凌晨4点左右,某服务告警,其中一个...
https://support.smartbear.comeadyapi/docs/soapui/steps/g...
有几个选项可用于执行自定义JMeter脚本并扩展基线JMeter功能...
Scala和Java为静态语言,Groovy为动态语言Scala:函数式编程,...
出处:https://www.jianshu.com/p/ce6f8a1f66f4一、一些内部...
在运行groovy的junit方法时,报了这个错误:java.lang.Excep...