/// <summary> /// Get fragment of text around Start place. Returns maximal mathed to pattern fragment. /// </summary> /// <param name="allowedSymbolsPattern">Allowed chars pattern for fragment</param> /// <returns>Range of found fragment</returns> public Range GetFragment(string allowedSymbolsPattern, RegexOptions options) { Range r = new Range(tb); r.Start = Start; Regex regex = new Regex(allowedSymbolsPattern, options); //go left, check symbols while (r.GoLeftThroughFolded()) { if (!regex.IsMatch(r.CharAfterStart.ToString())) { r.GoRightThroughFolded(); break; } } Place startFragment = r.Start; r.Start = Start; //go right, check symbols do { if (!regex.IsMatch(r.CharAfterStart.ToString())) { break; } } while (r.GoRightThroughFolded()); Place endFragment = r.Start; return(new Range(tb, startFragment, endFragment)); }