2

编辑:@Heinzi 的解决方案 https://stackoverflow.com/a/1731641/87698


例如,我有两个字符串,someText-test-stringSomeMoreText?还有一些像这样的模式字符串{0}test-string{1}?

我正在尝试从第一个字符串中提取与第二个字符串中占位符位置匹配的子字符串。

生成的子字符串应该是:someText-SomeMoreText

我试图用Regex.Split("someText-test-stringSomeMoreText?", "[.]*test-string[.]*\?". 但是,这不起作用。

我希望有人有另一个想法...

4

2 回答 2

0

您拥有的一种选择是使用命名组:

(?<prefix>.*)test-string(?<suffix>.*)\?

这将返回 2 个包含所需前缀和后缀的组。

var match = Regex.Match("someText-test-stringSomeMoreText?", 
    @"(?<prefix>.*)test-string(?<suffix>.*)\?");
Console.WriteLine(match.Groups["prefix"]);
Console.WriteLine(match.Groups["suffix"]);
于 2013-10-29T11:17:22.950 回答
0

我有一个解决方案,至少它有点动态。

首先,我将模式字符串拆分{0}test-string{1}?string[] patternElements = Regex.Split(inputPattern, @"(\\\{[a-zA-Z0-9]*\})");

然后我吐出输入someText-test-stringSomeMoreText?字符串 string[] inputElements = inputString.Split(patternElements, StringSplitOptions.RemoveEmptyEntries);

现在inputElements是与占位符对应的文本片段{0},{1},...

于 2013-10-29T14:53:26.593 回答