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+字符,而非[^:::*
:
-正向前瞻需要(?=:)
:
请参见您可以使用regex:
^(.*:.[\\][^:]*):
。
如果未找到:\:
序列,则此操作将失败。
匹配将是括号之间的部分
您可以看到演示。
@“^(.\\[^:]*)”
?您的答案是正确的,但如果没有找到:\:
序列,则不会失败。最后缺少一个:
<代码>^(.*:.[\][^:]*):是的,让我们添加(?=:)
RRR:domsd\ddf
sds4:kwertss\wegggds
^[^:]*:[^\\]*\\[^:]*(?=:)
var m = Regex.Match(s, @"^[^:]*:[^\\]*\\[^:]*(?=:)");
var res = string.Empty;
if (m.Success)
{
res = m.Value;
}
(^.*\\.*?):