正则表达式:匹配部分字符串

Regex: Match partial string

我需要一些帮助 - 我的技能不够:)(我不知道纯正则表达式是否可行)

案例:我有一些形式的文本输入:

输入 1:“abc,杂波,01;xyz,杂波,02;” (应该匹配)
input2: "abc,杂波,02;zyz,杂波,01;" (不匹配)
input3: "abc,clutter,02;abc,txt,txt,01;xyz,clutter,01"(应该匹配)

那么匹配应该是

所以是这样的: abc(.*)(?!,02;),01; .. 但这也匹配 input2,这不是本意:)

例如,您可以使用匹配除 ,;

之外的所有字符的重复模式
\babc(?:,(?!02,)[^,;\n]+)*,01;
  • \babc一个字边界,匹配abc
  • (?:非捕获组
    • ,(?!02,)[^,;\n]+ 否定前瞻,断言不是 02,并匹配除 , ; 或换行符
    • 之外的任何字符
  • )* 关闭群组并可选择重复
  • ,01;字面匹配

Regex demo

如果 abc 应该只匹配一个,您还可以将其添加到否定前瞻

\babc(?:,(?!(?:02|abc),)[^,;\n]+)*,01;

Regex demo