我有一个像
这样的字符串<zk>
<window>
...
<script>
...
var chart = new google.visualization.PieChart(zk.Widget.$("$piechart_3d").$n());
chart.draw(data, options);
</script>
<div id="piechart_3d"></div>
</window>
</zk>
我试图捕捉像classifier1:11,classifier2:,classifier3和classifier4
这样的术语所以这些分类器后面可以跟一个分号。
到目前为止,我想出了
classifier1:11:some text1##classifier2:fdglfgfg##classifier3:fgdfgfdg##classifier4
但这似乎没有抓住classifier4,不知道我在这里缺少什么
答案 0 :(得分:1)
答案 1 :(得分:1)
您的案例中的分类器似乎包含任何单词字符,其间可能包含单个:
,并以数字结尾。
因此,您可以使用
/(\w+(?::+\w+)*\d)[^#]*/g
请参阅regex demo
<强>解释强>:
(\w+(?::+\w+)*\d)
- 第1组捕获
\w+
- 一个或多个[a-zA-Z0-9_]
(字)字符(?::+\w+)*
- 1 + :
s以及1 + 1个字符的零个或多个序列\d
- 数字应位于此组的末尾[^#]*
- 除分隔符#
以外的零个或多个字符。JS:
var re = /(\w+(?::+\w+)*\d)[^#\n]*/g;
var str = 'classifier4##classifier1:11:some text1##classifier2:fdglfgfg##classifier3:fgdfgfdg\nclassifier1:11:some text1##classifier4##classifier2:fdglfgfg##classifier3:fgdfgfdg##classifier4';
var res = [];
while ((m = re.exec(str)) !== null) {
res.push(m[1]);
}
document.body.innerHTML = "<pre>" + JSON.stringify(res, 0, 4) + "</pre>";