Javascript regexp捕获由字符分隔的匹配项

Javascript regexp捕获由字符分隔的匹配项,javascript,regex,Javascript,Regex,我有一根像 classifier1:11:some text1##classifier2:fdglfgfg##classifier3:fgdfgfdg##classifier4 我试图捕捉像classifier1:11、classifier2:、classifier3和classifier4这样的术语 因此,这些分类器后面可以跟一个分号,也可以不跟一个分号 到目前为止,我想出了 /([^#]*)(?::(?!:))/g 但这似乎并没有捕获classifier4,不确定我在这里遗漏了什么根据您

我有一根像

classifier1:11:some text1##classifier2:fdglfgfg##classifier3:fgdfgfdg##classifier4
我试图捕捉像classifier1:11、classifier2:、classifier3和classifier4这样的术语

因此,这些分类器后面可以跟一个分号,也可以不跟一个分号

到目前为止,我想出了

/([^#]*)(?::(?!:))/g

但这似乎并没有捕获classifier4,不确定我在这里遗漏了什么

根据您的模式,您可以使用如下正则表达式:

([^#]*)(?::|$)

在您的案例中,分类器似乎由任何单词字符组成,这些字符之间可能有一个
,并以数字结尾

因此,您可以使用

/(\w+(?::+\w+)*\d)[^#]*/g

说明

  • (\w+(?:+\w+*\d)
    -第1组捕获
    • \w+
      -1个或多个
      [a-zA-Z0-9.]
      (word)字符
    • (?::+\w+*
      -零个或多个1+
      字符序列,然后是1+字字符序列
    • \d
      -此组的末尾应该有一个数字
  • [^#]*
    -除分隔符以外的零个或多个字符
JS:

var re=/(\w+(?:+\w+*\d)[^\n]*/g;
var str='classifier4###classifier1:11:一些文本1###classifier2:fdglfgfg##classifier3:fgdfgfdg\nclasifier1:11:一些文本1##classifier4#classifier2:fdglfgfg###classifier3:fgdgfdg##classifier4';
var-res=[];
while((m=re.exec(str))!==null){
res.push(m[1]);
}

document.body.innerHTML=“+JSON.stringify(res,0,4)+”尝试。你为什么使用“前瞻”功能?看起来你也可以使用
([^#]+)(?::$)
这是因为
classifier4
没有一个冒号(
)紧跟在它后面,你是说会有类似
classifier1::11::xxxx
的情况吗?
classifier1::11::某些文本1##classifier2
的预期结果是什么?也许可以尝试一下?不确定为什么它是downvoted此模式适用,但是如果classifier4出现在字符串之间或字符串的开头呢??例如
classifier4##classifier1:11:一些文本1##classifier2:fdglfgfg#classifier3:fgdfgdg
classifier1:11:一些文本1#classifier4##classifier2:fdglfgfg##classifier3:fgdgfdg
@sundman,是一个文本字符串。您可以使用
(分类器\d+:?\d*)
?。如何区分
text1
classifier1
?没有一个分类器不是文本字符串,它可能是文本字符串anything@AnandSunderraman那么,
text1
classifier1
之间的模式有什么不同呢?