REGEXP查找第一次出现的字符串后跟另一个字符串

时间:2017-07-19 15:42:54

标签: regex regex-negation regex-lookarounds

我有几页JSON可以像这样搜索:

"company": "chocolate factory"
"position": "founder"
"company": "chocolate packagers"
"position": "packager"
"company": "chocolate shop"
"position": "clerk"

我想只在第一次出现" position"时才匹配创始人并没有跟进。前面的示例不匹配,但以下内容匹配。

"company": "chocolate factory"
"position": "taster"
"company": "chocolate packagers"
"position": "founder"
"company": "chocolate shop"
"position": "clerk"

这看起来像是第一次出现" position"

("position": ")?

我认为这应该匹配第一次出现的"位置"只有在"创始人"

之后没有跟着它
("position": ")?(?![^"]*founder)

我已经在regexr.com上尝试了它,但它似乎无法正常工作。

这样做的正确方法是什么?

编辑:所以为了澄清,我只能在网络应用上使用搜索框。我猜测它是一个javascript正则表达式,但我无法确切地告诉我们使用了哪些标志(这会让事情变得困难)......但我认为它是一个正在进行正则表达式搜索的SQL数据库如果这是有道理的。

我想只匹配第一次出现" position"

(?:"position": ")?

但前提是"创始人"

(?:"position": ")?(?![^"]*founder)

(?:"position": "(?![^"]*founder))?

这种似乎适用于测试网站,但它似乎并不适用于网络应用。由于我不了解后端,我可能不会想出这个。

编辑:我发现了问题。这是postgresql正则表达式 - 转义略有不同,看起来它的搜索方式也有点不同。基本上,我不认为我想要的东西会起作用。

1 个答案:

答案 0 :(得分:0)

这应该符合您的要求。

^("(?!position).+?": ".+?"\n)+"position": "(?!founder)