private List <ISearchResult> FindAllMatches(string text, int offset, int length, SearchContext context, bool returnFirst) { var res = new List <ISearchResult>(); var endOffset = offset + length; return(SearchUsingRegex(offset, returnFirst, text, endOffset, res, context)); }
private List <ISearchResult> SearchUsingRegex(int offset, bool returnFirst, string text, int endOffset, List <ISearchResult> res, SearchContext context) { foreach (Match result in _searchPattern.Matches(text)) { if (context.IsCanceled) { return(null); } var resultEndOffset = result.Length + result.Index; if (offset > result.Index || endOffset < resultEndOffset) { continue; } //if (_matchWholeWords && // (!IsWordBorder(document, result.Index) || !IsWordBorder(document, resultEndOffset))) //{ // continue; //} res.Add(new SearchResult { StartOffset = result.Index, Length = result.Length, Data = result }); if (returnFirst) { break; } } return(res); }
public IList <ISearchResult> FindAll(string text, int offset, int length, SearchContext context) { return(FindAllMatches(text, offset, length, context, false)); }