【发布时间】:2017-12-03 00:29:23
【问题描述】:
我有以下类型的字符串,
33739: 033910: *Dec 12 01:09:12.669 UTC: %test1-3-test2: 你好,你好吗
这里,
- 我有 6 个冒号 (:)
- 有一组特殊的字符串, %(1 个或多个 char 或 num)-(一个 num)-(1 个或多个 char 或 num)
下面的正则表达式匹配结果为false,正则表达式中需要改变什么。谢谢!
private static bool IsValid(string value)
{
const string expression = @"(\w+):(\w+):(\w+):%(\w+)-(\d)(\w+):(\w+)";
return Regex.IsMatch(value, expression, RegexOptions.IgnoreCase);
}
var X = IsValid("<155>33739: 033910: *Dec 12 01:09:12.669 UTC: %XYz-3-UPDxyt: Hello, How era you");
【问题讨论】:
-
你有 6 个冒号 (:)
-
是的,对不起。我忽略了日期/时间
-
您还可以(仅在 .NET 中)量化匹配组,就像 (?:(.+?)(?::\s|$))+ - 这将匹配任何内容,直到空格冒号或 EOL,多次因为它会匹配 - 你不会在 Regexr 上看到它,但它会记住 .NET 中的每个组,而不仅仅是最后一个。运行匹配后访问
Captures而不是Groups,请参阅stackoverflow.com/questions/13689259/…