使用字符串KP中的正则表达式获取价值{{seq:2}}

时间:2018-02-13 05:26:47

标签: c# regex

有关详细信息,请参阅下面的示例

前:

  1. 如果我的字符串 Demo19 Demo{{seq:2}} (其中2是数字长度),那么我应该输出 19
  2. Demo191 模式 Demo{{seq:3}} =>输出: 191
  3. Demo19Test1 模式** Demo19Test{{seq:1}} ** =>输出: 1 (基于序列)
  4. Demo19KPTest1Demo 模式** Demo19KPTest{{seq:1}}Demo ** =>输出: 1 (基于序列)
  5. 演示,测试,KP只是字符串

2 个答案:

答案 0 :(得分:0)

它就像以下模式一样简单

(?<=KP)\d+\b

阅读此内容的方式

  • (?<=subpattern)零宽度正向后视断言。仅在左侧的子模式匹配时继续匹配

  • \d匹配任何十进制数字。

  • +匹配上一个元素一次或多次。

  • \b减少了回溯。

示例

var regex = new Regex(@"(?<=KP)\d+\b", RegexOptions.IgnoreCase);
var match = regex.Match(input);

if (match.Success)
{
   Console.WriteLine(match.Value);
}

<强>演示

https://regex101.com/r/879sPF/1

答案 1 :(得分:0)

如果我理解你想要什么,我认为这段代码可以帮助你:

// This means you want to find `KP` followed by a fixed sequence of numbers
var pattern = @"KP(\d{" + seq + "})"; 
var result = Regex
            .Matches(txt, pattern)
            .OfType<Match>()
            .Select(c => int.Parse(c.Groups[1].Value))
            .ToList();

[ C# Demo ]

var result = Regex
            .Matches(txt, @"KP(\d+)")
            .OfType<Match>()
            .ToList()[seq - 1]
            .Groups[1].Value;

[ C# Demo ]