检查两个字符串之间是否存在特定字符串

时间:2016-01-25 07:09:10

标签: regex pcre

字符串:

category_a:1280,1288,1255,1355,1755|category_b:1355,1279,78|category_c:1279,383,593,488

我想知道如何检查特定号码的存在,直到下一个|。例如,我想检查category_b是否包含数字1279。我试过了

/(category_b:)(.*)(\b(1279)\b)(|)/

Example

但它一直匹配到category_c

我不知道如何让?让它在下一次出现“|”时停止在1279中的第一个匹配category_b之后,它将不会转到category_c

脚本使用的正则表达式引擎是PCRE。

1 个答案:

答案 0 :(得分:1)

尝试

/(category_b:)(.*?)(\b(1279)\b)/

您需要将*更改为*?这使得它不情愿而不是贪婪。一个贪婪的量词将" eat"尽可能多,仍然匹配(因此它超过了下一个类别指示符)。一个不情愿的量词将会#34;吃掉#34;尽可能少,仍然匹配(因此,除非必须进入,否则它将避免下一个类别。)

然而,这可能仍有一些问题。我会进一步尝试:

/(category_b:)([0-9,]*?)(\b(1279)\b)/

不允许category_b之后的字符串有任何数字和逗号。这会阻止匹配

category_a:1280,1288,1255,1355,1755|category_b:1355,1278,78|category_c:1279,383,593,488