zoukankan      html  css  js  c++  java
  • 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


    ===

  • 相关阅读:
    iptables
    iftop
    sed&awk
    rz&sz
    关于springboot + mybatis plus 使用事务
    关于JsonArray.toList转换
    jmeter脚本录制
    去掉百度右边的百度热搜等干扰项,集中注意力呀~~
    报错
    图片的异步上传
  • 原文地址:https://www.cnblogs.com/darkmatter/p/3606832.html
Copyright © 2011-2022 走看看