我有一组数据正在通过正则表达式过滤到不同的数组中。其中一个数组用于包含对我的程序来说被认为“太长”的数据。并非所有这些“太长”的实例都是相同的长度,但我想缩短它们。
我想要像DRB1 * 01:02。
太长了就像DRB1 * 01:02:03或更长时间,包括像DRB1 * 01:02:03:abc:29
但是,前面的字母长度并不总是相同。我将处理诸如A * 1:01:02或TIM * 01:02之类的事情。因此,我特别关注两个整数及其前面的冒号的集合,以及可能在“太长”的数据中可能跟随的任何字母。我希望前面的字母,明星,两组数字和它们之间的冒号。
我想使用正则表达式来查找“太长”的数据片段,然后测量它匹配的数据的长度,然后向后切片以将其删除。
某些东西让我知道DRB1 * 01:02:03与* 01:02:03匹配,长度为9.相同的东西如DRB1 * 01:02:03:abc:29,其中它匹配* 01:02:03:abc:29并且告诉我长度为16.不匹配单词的长度。
有没有办法找到正则表达式匹配的数据部分的长度?包括正则表达式没有明确结束的情况?
我正在使用JavaScript。
答案 0 :(得分:1)
使用捕获组获取*
之后匹配的部分:
var matches = str.match(/^[A-Z]+(\*.*)$/);
if (matches) {
var len = matches[1].length;
alert("It's "+len+" characters long");
}
答案 1 :(得分:0)
perlish regex
if (/([A-Z0-9]+\*\d+:\d+)(.+)/) {
print "too long, prefix:$1 extra stuff:$2 length:".length($2)."\n";
}