Groovy正則表達式複雜邏輯判斷實例

下面的兩個pattern(p1和p2)分別表明了(A or B) and (C or D)和(A and B) or (C and D)的跨行匹配結果,固然還能夠用正則表達式構建更復雜的pattern,但這個實例證實了Groovy具有跨行匹配複雜邏輯表達式的能力。 正則表達式

值得注意的是,多行匹配文本時須要在匹配字符串前加「(?ms)」。 閉包

該實例同時演示了Groovy閉包的使用方法。 源代碼 three

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


===

相關文章
相關標籤/搜索