C# 正则表达式,通过引用字符串提取字符串

本文关键字:字符串 引用 提取 正则表达式 | 更新日期: 2023-09-27 18:37:12

编辑:按@Heinzi解决https://stackoverflow.com/a/1731641/87698


我得到了两根字符串,例如someText-test-stringSomeMoreText?和某种模式字符串,例如{0}test-string{1}?

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

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

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

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

C# 正则表达式,通过引用字符串提取字符串

一个选项是使用命名组:

(?<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"]);

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

首先,我将模式字符串拆分{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},...