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
见
说明:
-第1组捕获(\w+(?:+\w+*\d)
-1个或多个\w+
(word)字符[a-zA-Z0-9.]
-零个或多个1+(?::+\w+*
字符序列,然后是1+字字符序列:
-此组的末尾应该有一个数字\d
-除分隔符以外的零个或多个字符[^#]*
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
之间的模式有什么不同呢?