获取找到匹配项的原始正则表达式模式

时间:2013-09-03 11:02:05

标签: c# .net regex

考虑一下:Match regexMatch = regex.Match(lineToScan); 正则表达式是包含正则表达式模式的Regex的对象(例如A | B | C) 那么我能找到哪个正则表达式(A或B等)找到了马赫?

3 个答案:

答案 0 :(得分:0)

您应该使用Regex.Matches,因为这将返回集合中的所有匹配项。

foreach (Match m in Regex.Matches(value, pattern))
    Console.WriteLine(m.Value);

答案 1 :(得分: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属性以发现哪个组(如果有)成功匹配。

答案 2 :(得分: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);