private List <SearchResult> GetSearchResults(SearchQuery query, int offset, int length) { if (length == 0 || AvalonEditDocument.TextLength == 0) { return(null); } // Use regular expression. var regex = query.AsRegex(); if (regex == null) { return(null); } // Match regular expression. var matches = regex.Matches(AvalonEditDocument.Text); // Return the search results within the specified text segment. var searchResults = new List <SearchResult>(matches.Count); int endOffset = offset + length; foreach (Match match in matches) { if (offset <= match.Index && match.Index + match.Length <= endOffset) { searchResults.Add(new SearchResult(this, match)); } } return(searchResults); }