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