C# 正则表达式-基于条件的子字符串

C# 正则表达式-基于条件的子字符串,c#,regex,C#,Regex,我正在尝试编写一个正则表达式,以便在C中使用它# 正则表达式的用途是根据输入大小获取输入的子字符串 正则表达式目标 如果输入大小小于13,则获取完整输入 否则,如果输入大小大于25,则从输入中获取从索引3到索引16的子字符串(因此我跳过前三个字符) 这是我到现在为止所带的东西 (?(?=.{25,}).{3}(.{13})|(?(?=.{0,13})(.{0,13}))) 这不起作用,因为当输入大小大于25时,结果不会修剪前三个字符 检查它注意,非正则表达式解决方案非常简单: public s

我正在尝试编写一个正则表达式,以便在C中使用它#

正则表达式的用途是根据输入大小获取输入的子字符串

正则表达式目标

如果输入大小小于13,则获取完整输入

否则,如果输入大小大于25,则从输入中获取从索引3到索引16的子字符串(因此我跳过前三个字符)

这是我到现在为止所带的东西

(?(?=.{25,}).{3}(.{13})|(?(?=.{0,13})(.{0,13})))
这不起作用,因为当输入大小大于25时,结果不会修剪前三个字符


检查它

注意,非正则表达式解决方案非常简单:

public string check(string s)
{
    var res = "";
    if (s.Length>=25)
        res = s.Substring(3,13);
    else if (s.Length <= 13)
        res = s;
    return res;
}

请参阅a。

为什么使用正则表达式?你就不能用简单的if和子字符串吗?14到25之间的尺寸你没有得到任何东西吗?@PatrickArtner是的,trueTry,结果是“res”组。@MohammadHamoud你是什么意思?它们不在“res”组中捕获。你在做什么?请在问题中描述你的问题。
^(?=.{25,}).{3}(?<res>.{13})|^(?=.{0,13}$)(?<res>.*)
var res = "";
var m = Regex.Match(s, @"^(?=.{25,}).{3}(?<res>.{13})|^(?=.{0,13}$)(?<res>.*)")
if (m.Success) 
{
    res = m.Groups["res"].Value;
}