Pchp.Library.PerlRegex.RegexParser.TrimDelimiters C# (CSharp) Метод

TrimDelimiters() приватный статический Метод

Matches end and start delimiters and returns enclosed pattern.
private static TrimDelimiters ( string re, int end ) : string
re string
end int
Результат string
        private static string TrimDelimiters(string re, int end)
        {
            Debug.Assert(re != null);
            Debug.Assert(end <= re.Length);
            Debug.Assert(re.Length != 0);

            if (end > 0)
            {
                var end_delimiter = re[end - 1];   // last char

                if (char.IsLetterOrDigit(end_delimiter) || end_delimiter == '\\')
                {
                    throw new ArgumentException("delimiter_alnum_backslash");
                }

                char start_delimiter;
                if (end_delimiter == ']') start_delimiter = '[';
                else if (end_delimiter == ')') start_delimiter = '(';
                else if (end_delimiter == '}') start_delimiter = '{';
                else if (end_delimiter == '>') start_delimiter = '<';
                else start_delimiter = end_delimiter;

                // skip trailing whitespaces
                int i = 0;
                while (i < re.Length && char.IsWhiteSpace(re[i]))
                {
                    i++;
                }
                
                if (i < end)
                {
                    if (re[i] == start_delimiter)
                    {
                        return re.Substring(i + 1, end - i - 2);
                    }
                    else
                    {
                        throw new ArgumentException("preg_no_end_delimiter");
                    }
                }
            }

            throw new ArgumentException("regular_expression_empty");
        }