This question already has answers here:
Regex: Repeated capturing groups
                                
                                    (3个答案)
                                
                        
                                去年关闭。
            
                    
我有以下字符串:

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


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

我已经尝试过以下模式:

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

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

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

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

最佳答案

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

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


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

然后它匹配任意数量的digits

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

关于c# - 正则表达式在组内查找值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53327647/

10-13 03:18