下面的两个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


===

Groovy正则表达式复杂逻辑判断实例的更多相关文章

  1. JavaScript 正则表达式的应用实例

    都是自己实例记录,不断更新中.... 1.字符串找出所有匹配的邮箱并替换 <html> <body> <script type="text/javascript ...

  2. groovy regex groups(groovy正则表达式组)

    先看一个java正则表达式的例子. import java.util.regex.Matcher; import java.util.regex.Pattern; public class TestM ...

  3. [转]使用DW正则表达式批量替换实例介绍

    原文地址:http://www.jb51.net/Dreamweaver/86329.html 网站优化过程中,经常会遇到很多要批量修改的东西,一个个修改,明显效率低下.本文是使用DW正则表达式批量替 ...

  4. PHP正则表达式笔记和实例

    转自:  https://www.cnblogs.com/yafei236/p/4168290.html 本文主要介绍如何在PHP使用正则表达式,并附带几个实例. 这两天工作用到了正则表达式,发现自己 ...

  5. Java和Groovy脚本互相调用实例

    本实例是GODU动态脚本的一个技术简化版,演示了java调groovy,groovy又调java的运行过程. 测试用例: package com.boco.godu.integration; impo ...

  6. Groovy安装与入门实例

    摘自: http://blog.csdn.net/dc_726/article/details/8576205 1 Groovy是什么? 来看下官网的介绍:http://groovy.codehaus ...

  7. python正则表达式+正则大量实例

    正则表达式 正则表达式内部函数详解http://www.runoob.com/python/python-reg-expressions.html 正则表达式是一个特殊的字符序列,它能帮助你方便的检查 ...

  8. python正则表达式应用优化实例

    1.问题出现 需要提取一份xml文件中参数名和参数值,格式如下: <p name="actOlLaPdcch">true</p> 我们需要的字段如上,红色部 ...

  9. JMeter学习-009-JMeter 后置处理器实例之 - 正则表达式提取器(二)多参数获取

    前文简述了通过后置处理器 - 正则表达式提取器 获取 HTTP请求 响应结果中的特定数据,未看过的亲,敬请参阅 JMeter学习-008-JMeter 后置处理器实例之 - 正则表达式提取器(一). ...

随机推荐

  1. 使用kubeadm进行k8s集群升级

    一.目标 操作系统:CentOS Linux release 7.6.1810 (Core) 安装软件: docker:18.06.3-ce 从v1.15.5升级到v1.16.15 当前版本: [ro ...

  2. RabbitMQ重试机制

    消费端在处理消息过程中可能会报错,此时该如何重新处理消息呢?解决方案有以下两种. 在redis或者数据库中记录重试次数,达到最大重试次数以后消息进入死信队列或者其他队列,再单独针对这些消息进行处理: ...

  3. MyBatis:MyBatis-Plus条件构造器EntityWrapper

    EntityWrapper 简介 1. MybatisPlus 通过 EntityWrapper(简称 EW,MybatisPlus 封装的一个查询条件构造器)或者 Condition(与 EW 类似 ...

  4. 其他:压力测试Jmeter工具使用

    下载路径: http://yd01.siweidaoxiang.com:8070/jmeter_52z.com.zip 配置汉化中文: 找到jmeter的安装目录:打开 \bin\jmeter.pro ...

  5. 24 shell 管道命令与过滤器

    1.管道命令的用法 2.使用管道命令的好处: 3.重定向和管道的区别 4.Linux管道实例 5.管道与重定向 1)管道与输入重定向 2)管道与输出重定向 6.过滤器 7.过滤器举栗 1.管道命令的用 ...

  6. mac 中一些日常小问题与快捷键

    1.备忘录中的中英文符号问题 比如:在备忘录中使用英文符号时,总是会被自动的修改为中文符号 解决方法:系统偏好设置-键盘-文本,去选"使用智能引号和存折号" p.p1 { marg ...

  7. Java实验项目二——打印某年某月日历

    Program:打印万年历(输入年份,月份,输出该月的日历,已知1900年1月1日是星期一), 要 求: (1)编写一个方法判断闰年: (2)编写一个方法判断某年某月有多少天: (3)编写一个方法计算 ...

  8. 《基于JQuery和CSS的特效整理》系列分享专栏

    <基于JQuery和CSS的特效整理>已整理成PDF文档,点击可直接下载至本地查阅https://www.webfalse.com/read/201724.html 文章 一款基于jQue ...

  9. js定时器中引用的外部函数如何传递参数

    问题:比如在一个点击事件中我需要将点击事件参数event传入到定时器中,如果只是单纯的在setTimeout(timer(e),1000)中写上括弧e,则该定时器不会等到1s才执行,而是会立即执行.那 ...

  10. Java | 参数传值机制

    值传递 java中,方法中所有的参数的都是"值传递",就是传递的是原来值的副本,不是原来的参数,因此,改变不会影响到原来的参数. 基本数据类型参数的传值 传递的都是副本,改变以后不 ...