我有以下字符串:
TestInputs.abc_def.alpha=abc^ORtestVars.var23.nameISEMPTY^testInputs.alpha_bravo.more.otheroneCONTAINSsomething^testVars.anotherone!=abc^testVars.mYVar!=abc
我需要它来匹配
testInputs.abc_def.alpha
.
testVars.var23.name
个.
一百零二
testVars.anotherone
testVars.mYVar
我可以匹配所有匹配项,但问题是它还匹配一些不应该匹配的运算符:
ISEMPT 包含
(还有许多其他公司,如IN、Not IN等)
我有一个数组,我可以加入创建一个交替,但问题是保持匹配,没有删除的子字符串.就目前而言,
testVars.var23.name
个
我最终与
testVars.var23.nameISEMPTY
个
同样,我匹配testInputs.alpha_bravo.more.otheroneCONTAINS
目前的规则是:
- 匹配可以从
testInputs.
或testVars.
开始 - 任何字母数字,不区分大小写,以及下划线(_)和句点(.)
- 测试输入或测试变量后的子字符串可以是任意长度
- 一个字符串中可以有多个匹配项
- 匹配的形式也可以是{{var}},例如,{{testInputs.myinput}}=ABC或{{testVars.my_var}}ISEMPTY,但为了更容易阅读,我没有对上面的内容进行说明.
到目前为止,我已经try 了以下几种方法:
(({{)?(?:testInputs\.|testVars\.)[a-zA-Z0-9_\.]+(}})?)
个
并try 了几种不同的前视/后视
(?!CONTAINS|ISEMPTY)
个
但未能成功排除无效的子字符串,同时仍与我正在寻找的匹配部分匹配.