下面的两个pattern(p1和p2)分别代表了(A or B) and (C or D)和(A and B) or (C and D)的跨行匹配结果,当然还可以用正则表达式构建更复杂的pattern,但这个实例证明了Groovy具备跨行匹配复杂逻辑表达式的能力。

值得注意的是,多行匹配文本时需要在匹配字符串前加“(?ms)”。

该实例同时演示了Groovy闭包的使用方法。
源代码

msg1 = '''one two three four

five six'''

msg2 = '''Jan Feb Mar

Apr May Jun'''

msg3 = '''one two three

Apr May Jun'''

msg4 = '''Jan Feb Mar

four five six'''

p1 = / (?ms) (two|Feb).*(five|May)/

p2 = / (?ms) (two.five)|(Feb.May)/

msgs = [msg1, msg2, msg3, msg4]

patterns = [p1, p2]

patterns.each { pattern->

println 'pattern is: '+pattern

msgs.each { msg->

println 'msg is: '+msg

println 'match result is:'

matcher = msg =~ pattern

if (matcher)

println "true"

else

println "false"

println '---'

}

println '==='

}
运行结果
pattern is: (?ms)(two|Feb).*(five|May)

msg is: one two three four

five six

match result is:

true


msg is: Jan Feb Mar

Apr May Jun

match result is:

true


msg is: one two three

Apr May Jun

match result is:

true


msg is: Jan Feb Mar

four five six

match result is:

true


===

pattern is: (?ms)(two.five)|(Feb.May)

msg is: one two three four

five six

match result is:

true


msg is: Jan Feb Mar

Apr May Jun

match result is:

true


msg is: one two three

Apr May Jun

match result is:

false


msg is: Jan Feb Mar

four five six

match result is:

false


===

最新文章

  1. Jquery利用Iframe实现跨子域
  2. 使用System.Drawing.Imaging.dll进行图片的合并
  3. OpenGL es3.0 初始化及渲染
  4. 对easyui datagrid组件的一个小改进
  5. java:线程的简单控制方法
  6. php无极分类
  7. PHP basename() 函数
  8. EL表达式及其定义和使用 转
  9. Java---类反射(1)---类反射入门和基础
  10. Run Book Automation - RBA系统介绍
  11. javascript小记五则:用JS写一个图片左右自由滚动的“跑马灯”效果
  12. Kubernetes - kubectl proxy
  13. .Net新利器Rider的破解安装与使用
  14. sql server 将两列数据合并到一列 拼接
  15. wx.navigateBack(OBJECT)怎么携带参数呢?
  16. 解开一个疑惑,为什么LVS开放的端口,使用netstat或ss命令,不能查找到其监听的端口呢?
  17. 【java】J2EE、J2SE和J2ME的区别
  18. day 84 Vue学习四之过滤器、钩子函数、路由、全家桶等
  19. ubuntu ---QQ install/desktop/ibus reinstall
  20. Ruby 配置vimrc

热门文章

  1. 创建Maven项目骨架并使用
  2. [心得体会]jvm
  3. ESP32-FAT文件系统使用磨损均衡存储文件笔记
  4. 访问其他人的vue项目
  5. postman使用笔记
  6. 学习 CLR 源码:连续内存块数据操作的性能优化
  7. win10实现倒计时锁屏,休眠
  8. org.apache.maven.archiver.mavenarchiver.getmanifest怎么解决——原因就是你的maven的配置文件不是最新的
  9. spring-1-spring介绍和IOC容器开发
  10. 微信小程序云开发-列表数据分页加载显示