有关详细信息,请参阅下面的示例
前:
Demo19
Demo{{seq:2}}
(其中2是数字长度),那么我应该输出 19
Demo191
模式 Demo{{seq:3}}
=>输出: 191
Demo19Test1
模式** Demo19Test{{seq:1}}
** =>输出: 1
(基于序列)Demo19KPTest1Demo
模式** Demo19KPTest{{seq:1}}Demo
** =>输出: 1
(基于序列)演示,测试,KP只是字符串
答案 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);
}
<强>演示强>
答案 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();
var result = Regex
.Matches(txt, @"KP(\d+)")
.OfType<Match>()
.ToList()[seq - 1]
.Groups[1].Value;