Ejemplo n.º 1
0
        /// <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);
        }
Ejemplo n.º 2
0
 /// <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));
 }