1

我从不使用正则表达式,因为它们看起来很复杂,尽管我知道它们密集而强大。我想我会在你的帮助下给他们一个机会

如何使用正则表达式提取字符串变量中所有出现的 %sometext% 并返回匹配项的字符串数组?

例如,如果输入字符串是:

set NewVariable=%Variable1%%Variable2%%Variable3%SomeText%Variable4%

输出数组将是:

Array[0]=Variable1
Array[1]=Variable2
Array[2]=Variable3
Array[3]=Variable4
4

3 回答 3

1
var NewVariable = "%Variable1%%Variable2%%Variable3%SomeText%Variable4%";
var Array = Regex.Matches(NewVariable, @"%(.+?)%")
                 .Cast<Match>()
                 .Select(m => m.Groups[1].Value)
                 .ToArray();
于 2013-06-08T22:12:22.507 回答
1

正则表达式应如下所示:

%([^%]*)%

分隔符在两边,捕获组在它们之间。

方法如下:

var mc = Regex.Matches(
    "quick%brown%%fox%jumps%over%the%lazy%%dog%"
,   "%([^%]*)%"
);
foreach (Match m in mc) {
    Console.WriteLine(m.Groups[1]);
}

上面的输出如下所示:

brown
fox
over
lazy
dog

这是关于 ideone 的演示

于 2013-06-08T22:11:10.273 回答
0

你的正则表达式是%[^%]+%. 查看Regex.Matches方法。

于 2013-06-08T22:10:41.587 回答