@Override
	public String toString() {
	
		final StringBuffer a = new StringBuffer();
		final StringBuffer b = new StringBuffer();
		Element temp = pattern;
		while(temp != null) {
			if (temp.isSpecial) {
				switch(temp.item) {
					case '.':
						a.append("[:ANY:]");
						break;
					case 'd':
						a.append("[:digit:]");
						break;
					case 'D':
						a.append("[:non-digit:]");
						break;
					case 's':
						a.append("[:whitespace:]");
						break;
					case 'S':
						a.append("[:non-whitespace:]");
						break;
					case 'w':
						a.append("[:word character:]");
						break;
					case 'W':
						a.append("[:non-word character:]");
						break;
					default:
						a.append(temp.item);
				}
			} else {
				a.append(temp.item);
			}
			b.append(temp.replacement);
			temp = temp.next;
		}
		
		return "tr/" + a + "/" + b + "/";
	}