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

Check if a specific string exists between two strings

字符串:

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

我不知道如何放置 ? 使其在下一次出现“|”时停止在 category_b 中的第一场比赛 1279 之后,因此它不会继续进行到 category_c.

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

尝试

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

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

但是,这可能仍然存在一些问题。我会进一步尝试:

/(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