* @return
*/
public Regex repeat(int minTimes, int maxTimes) {
Regex retVal = new Regex();
retVal.isSelf = this.isSelf;
retVal.addSymbol(new Symbol("", Type.START));
for (int i = 0; i < maxTimes; i++) {
retVal.addSymbol(this.symbolList.toArray(new Symbol[] {}));
for (Integer key : this.connections.keySet()) {
for (Integer successor : this.connections.get(key)) {
retVal.addConnection(key + 1 + (i * this.symbolList.size()), successor + 1 + (i * this.symbolList.size()));
}
}
retVal.addConnection(i * this.symbolList.size(), 1 + (i * this.symbolList.size()));
}
retVal.addSymbol(new Symbol("", Type.END));
retVal.addConnection(retVal.symbolList.size() - 2, retVal.symbolList.size() - 1);
for (int i = minTimes; i < maxTimes; i++) {
retVal.addConnection(i * this.symbolList.size(), retVal.symbolList.size() - 1);