0

我有一组数据正在通过正则表达式过滤到不同的数组中。其中一个数组用于包含我的程序认为“太长”的数据。并非所有这些“太长”实例的长度都相同,但我想缩短它们。

我想要像 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。

4

2 回答 2

1

使用捕获组获取匹配后的部分*

var matches = str.match(/^[A-Z]+(\*.*)$/);
if (matches) {
    var len = matches[1].length;
    alert("It's "+len+" characters long");
}
于 2013-07-03T21:08:56.903 回答
0

perlish 正则表达式

 if (/([A-Z0-9]+\*\d+:\d+)(.+)/) {
    print "too long, prefix:$1 extra stuff:$2 length:".length($2)."\n";
 }
于 2013-07-03T21:07:27.650 回答