字符串:
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)(|)/
但它一直匹配到category_c
。
我不知道如何让?
让它在下一次出现“|”时停止在1279
中的第一个匹配category_b
之后,它将不会转到category_c
。
脚本使用的正则表达式引擎是PCRE。
答案 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