groovy with regular expression

时间:2017-11-02 07:07:57

标签: regex groovy soapui

我尝试在SoapUI中学习groovy,现在我在groovy中遇到了正则表达式的问题。

我尝试在groovy中构建一个正则表达式来解析这个文本:

  

[EM6111949VA61 = cfefcgjnjcidaiieodmlgfijaiknankpiodhghbagndikijiieicfhiiiojmfcfgjjkokkoilinbkkedcaafplikgjhomkhnopjhfhpjgkadalbkeenengiapjpeaiemokenfckjbeho;   路径= / BLA / BLA;安全;仅Http]

结果必须是:

  

EM6111949VA61 = cfefcgjnjcidaiieodmlgfijaiknankpiodhghbagndikijiieicfhiiiojmfcfgjjkokkoilinbkkedcaafplikgjhomkhnopjhfhpjgkadalbkeenengiapjpeaiemokenfckjbeho

我在SoapUI中的groovy源代码是:

erg='[EM6111949VA61=cfefcgjnjcidaiieodmlgfijaiknankpiodhghbagndikijiieicfhiiiojmfcfgjjkokkoilinbkkedcaafplikgjhomkhnopjhfhpjgkadalbkeenengiapjpeaiemokenfckjbeho; path=/bla/bla; secure; HttpOnly]'


def muster = /(?<=\[)[\w]+=[\w]+/

(erg ==~ muster).each {
log.info "Muster $it"
}

log.info结果为:Muster false

我使用Expression ::

尝试文本
(?<=\[)[\w]+=[\w]+ to http://www.regexe.de/

结果就是我需要的,

  

EM6111949VA61 = cfefcgjnjcidaiieodmlgfijaiknankpiodhghbagndikijiieicfhiiiojmfcfgjjkokkoilinbkkedcaafplikgjhomkhnopjhfhpjgkadalbkeenengiapjpeaiemokenfckjbeho

groovy

中的正确语法是什么

非常感谢您的回答

迈克尔

1 个答案:

答案 0 :(得分:2)

您的模式有效,但==~运算符要求整个字符串与此模式匹配。您当前的正则表达式等于/^(?<=\[)[\w]+=[\w]+\z/

使用允许部分匹配的=~,而不是==~(需要完整字符串匹配)。

请注意,您可以将[\w]写为\w,因为\w是唯一的&#34;原子&#34;在角色类中。

请参阅Groovy demo

def erg='[EM6111949VA61=cfefcgjnjcidaiieodmlgfijaiknankpiodhghbagndikijiieicfhiiiojmfcfgjjkokkoilinbkkedcaafplikgjhomkhnopjhfhpjgkadalbkeenengiapjpeaiemokenfckjbeho; path=/bla/bla; secure; HttpOnly]'
def regex = /(?<=\[)\w+=\w+/
def muster = erg =~ regex
(0..<muster.count).each { print muster[it] }

输出:

EM6111949VA61=cfefcgjnjcidaiieodmlgfijaiknankpiodhghbagndikijiieicfhiiiojmfcfgjjkokkoilinbkkedcaafplikgjhomkhnopjhfhpjgkadalbkeenengiapjpeaiemokenfckjbeho