/// <summary> /// Returns all boundaries matching the pattern in a text /// </summary> /// <param name="pattern">Search pattern</param> /// <param name="text">Text</param> /// <returns>List of boundaries</returns> private List <Boundary> MatchPattern(SearchPattern pattern, string text) { List <Boundary> matchList = new List <Boundary>(); RegexOptions reopt = RegexOptions.None; if (pattern.Modifiers != null && pattern.Modifiers.Length > 0) { reopt |= (pattern.Modifiers.Contains("i")) ? RegexOptions.IgnoreCase : RegexOptions.None; reopt |= (pattern.Modifiers.Contains("m")) ? RegexOptions.Multiline : RegexOptions.None; } Regex patRegx = new Regex(pattern.Pattern, reopt); MatchCollection matches = patRegx.Matches(text); if (matches.Count > 0) { foreach (Match m in matches) { Boundary bound = new Boundary() { Index = m.Index, Length = m.Length }; if (ScopeMatch(pattern, bound, text)) { matchList.Add(bound); } if (_stopAfterFirstMatch) { break; } } } return(matchList); }
/// <summary> /// Returns all boundaries matching the pattern /// </summary> /// <param name="pattern">Search pattern</param> /// <returns>List of boundaries</returns> public List <Boundary> MatchPattern(SearchPattern pattern) { return(MatchPattern(pattern, _content)); }