C# .net正则表达式,将匹配序列分条

C# .net正则表达式,将匹配序列分条,c#,.net,regex,C#,.net,Regex,我的正则表达式知识让我失望,我需要一些帮助 我试图获取一个字符串输入,如下所示 @"RRR:domsd\ddf:sdf:dsf:f" 或 在这两种情况下,从开始到第一次\之后,但在第一次\之后的第一次:之前,都要剥去所有东西 因此,结果将是: RRR:domsd\ddf sds4:kwertss\wegggds 如果未找到:\:序列,则if-should-state匹配失败 到目前为止,我已经尝试了以下两种规则 第一个:@.*[:].[\].[\].[:]”匹配所有内容,直到最后一个:,而不

我的正则表达式知识让我失望,我需要一些帮助

我试图获取一个字符串输入,如下所示

@"RRR:domsd\ddf:sdf:dsf:f"

在这两种情况下,从开始到第一次
\
之后,但在第一次
\
之后的第一次
之前,都要剥去所有东西

因此,结果将是:

RRR:domsd\ddf
sds4:kwertss\wegggds
如果未找到
:\:
序列,则if-should-state匹配失败

到目前为止,我已经尝试了以下两种规则

第一个:
@.*[:].[\].[\].[:]”
匹配所有内容,直到最后一个
,而不是
\
之后的第一个

第二个:
@”(.+?:.+?):(.+)“
,它只匹配整个字符串

您似乎需要使用:

详细信息

  • ^
    -字符串的开头
  • [^:::*
    -0+字符,而非
  • -冒号
  • [^\\]*
    -0+字符,而非
    \
  • \\
    -文字
    \
  • [^:::*
    -0+字符,而非
  • (?=:)
    -正向前瞻需要
在C#中:

您可以使用正则表达式(带有全局和多行标志)


请参见

您可以使用regex:
^(.*:.[\\][^:]*):
。 如果未找到
:\:
序列,则此操作将失败。 匹配将是括号之间的部分


您可以看到演示。

@“^(.\\[^:]*)”
?您的答案是正确的,但如果没有找到
:\:
序列,则不会失败。最后缺少一个
<代码>^(.*:.[\][^:]*):是的,让我们添加
(?=:)
RRR:domsd\ddf
sds4:kwertss\wegggds
^[^:]*:[^\\]*\\[^:]*(?=:)
var m = Regex.Match(s, @"^[^:]*:[^\\]*\\[^:]*(?=:)");
var res = string.Empty;
if (m.Success) 
{
     res = m.Value;
}
(^.*\\.*?):