我有以下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