public RegExpBuilder Either(RegExpBuilder r)
 {
     _flushState();
     _either = r.getLiteral();
     return this;
 }
 public RegExpBuilder Append(RegExpBuilder r)
 {
     Exactly(1);
     _like = r.getLiteral();
     return this;
 }
 public RegExpBuilder Ahead(RegExpBuilder r)
 {
     _flushState();
     _literal.Append("(?=" + r.getLiteral() + ")");
     return this;
 }
 public RegExpBuilder Or(RegExpBuilder r)
 {
     string either = _either;
     string or = r.getLiteral();
     if (either == "")
     {
         _literal.Remove(_literal.Length - 1, 1);
         _literal.Append("|(?:" + or + "))");
     }
     else
     {
         _literal.Append("(?:(?:" + either + ")|(?:" + or + "))");
     }
     _clear();
     return this;
 }
 public RegExpBuilder Optional(RegExpBuilder r)
 {
     Max(1);
     _like = r.getLiteral();
     return this;
 }
 public RegExpBuilder Like(RegExpBuilder r)
 {
     _like = r.getLiteral();
     return this;
 }