正则表达式在组内查找值

时间:2018-11-15 20:45:21

标签: c# regex

我有以下字符串:

Weight ::  1390 - 1430 Sizes :: 1450 - 1480 - 1530 - 1600 - 1700 - 1800 Min :: 1350

我想获取所有的size值。因此,在此示例中,它将为145014801530160017001800。可用大小的数量是可变的。可以是2到10次。

我已经尝试过以下模式:

(?i)sizes :: *(?=.*)(?:(\d*)( - )*) .*min

但是我只得到第一个值(1450)。

如果使用此模式,则group1中将包含所有可用值。但是后来我被困住了。

(?i)sizes :: *(.*) .*min

1 个答案:

答案 0 :(得分:1)

您可以在后面使用否定的外观,例如:

@"(?<=Sizes.*)\d+(?<!Min.*)"

它使用look behind,查找'Sizes',后跟任意数量的任何字符。

然后它匹配任意数量的digits

最后,它使用否定的外观,寻找'Min'。这样一来,当单词到达时,它便停止匹配。