考虑一下我有:Match regexMatch = regex.Match(lineToScan);
正则表达式是包含Regex
正则表达式模式的对象(例如 A|B|C) 那么我可以找到哪个正则表达式(对于 A 或对于 B 等)找到了 mach 吗?
问问题
483 次
3 回答
0
您应该使用Regex.Matches,因为这将返回集合中的所有匹配项。
foreach (Match m in Regex.Matches(value, pattern))
Console.WriteLine(m.Value);
于 2013-09-03T11:05:32.630 回答
0
您可以使用组来确定匹配的正则表达式的哪一部分:
var regex = new Regex("(?<a>A)|(?<b>B)|(?<c>C)");
var match = regex.Match("B");
var matchesA = match.Groups["a"].Success; // will be false
var matchesB = match.Groups["b"].Success; // will be true
var matchesC = match.Groups["c"].Success; // will be false
通过使用命名组为每个部分指定一个名称(“a”、“b”和“c”)。然后,您可以检查该Groups
属性以发现哪个组(如果有)成功匹配。
于 2013-09-03T11:08:54.267 回答
0
如果您使用单词,则需要 2 个匹配项:
string regex_string = "WORD_0|WORD_1|WORD_N";
Regex regex_matcher = new Regex(@"(" + regex_string + @")\b", RegexOptions.Multiline | RegexOptions.IgnoreCase);
string result = regex_matcher.Replace("This return 'word_1' in UpperCase", m => Regex.Match(regex_string, m.ToString(), RegexOptions.IgnoreCase | RegexOptions.Multiline).Value);
于 2016-07-22T20:52:37.623 回答