예제 #1
0
        public string MatcherRegEx(bool hasNext)
        {
            // <p (id=#([0-9.*{6})|sdf).*>

            var regExp = new StringBuilder();

            regExp.Append(Name)
            .Append(Consts.ANY_NORMAL_WHITESPACES)
            .Append("=")
            .Append(Consts.ANY_NORMAL_WHITESPACES)
            .Append("\"")
            .Append(Consts.OPEN_ATTRIBUTE);

            bool hasRegExps = AllowedRegExps.Any();

            if (AllowedRegExps.Count() + AllowedValues.Count() > 0)
            {
                foreach (string allowedValue in AllowedValues)
                {
                    regExp.Append(DocumentTag.EscapeRegularExpressionCharacters(allowedValue));

                    if (AllowedValues.Last() != allowedValue || hasRegExps)
                    {
                        regExp.Append(Consts.ATTRIBUTE_DIVIDER);
                    }
                }

                foreach (string allowedRegExp in AllowedRegExps)
                {
                    regExp.Append(allowedRegExp);
                    if (AllowedRegExps.Last() != allowedRegExp)
                    {
                        regExp.Append(Consts.ATTRIBUTE_DIVIDER);
                    }
                }

                if (this.AllowedRegExps.Count() + this.AllowedValues.Count() > 0)
                {
                    regExp.Append(Consts.CLOSE_ATTRIBUTE);
                }

                regExp.Append("\"" + Consts.ANY_NORMAL_WHITESPACES);

                if (hasNext)
                {
                    regExp.Append(Consts.ATTRIBUTE_DIVIDER);
                }
            }
            return(regExp.ToString());
        }