如何选择每个数字在一个列表与RegEx,但只有在一组特定的字符后?



我有以下RegEx:
/((?<=RGB:s)d*){1}[^,s]+/gm
和以下文本使用它:

RGB: 123, 12, 5
HSV: 23, 119, 223
7

我试图让它选择所有3个数字后面的"RGB:",但不包括"RGB:"或者匹配中的空格和逗号。我是相当新的RegEx和我的表达式似乎几乎工作,但我被困在一个问题。它只匹配第一个数字,并在逗号处停止。我不明白这个原因,我不能让它工作后,改变我的RegEx多次。我这样做的原因是,这样我就可以轻松地用新数字替换文件中的许多数字。我使用的语言是c#。

我想做的是:

RGB:123,12,5
HSV: 23,119,223
7
(匹配"RGB:"后的3个数字)

实际在做什么:

RGB:123, 12,5
HSV: 23,119,223
7
(只匹配"RGB:"后的第一个数字)

我将匹配bRGB: (d+, d+, d+),然后将第一个捕获组分割为逗号,以获得字符串数字数组。

var input = "RGB: 123, 12, 5nHSV: 23, 119, 223n7";
var pattern = @"bRGB: (d+, d+, d+)";
var match = Regex.Match(input, pattern).Groups[1].Value;
var rx = new Regex(@",s*");
var nums = rx.Split(match);
Array.ForEach(nums, Console.WriteLine);

这个打印:

123
12
5

最新更新