public static Card parseLine(String line) {
		Matcher m = linePattern.matcher(line);
		if(m.matches()) {
			Integer count;
			try {
				count = Integer.parseInt(m.group(1));				
			} catch (NumberFormatException e) {
				count = null;
			}
			String name = m.group(2);
			String exp = m.group(3);
			
			if(count != null) {
				if(exp != null) {
					// name & exp & count
					return new Card(name, exp, count);
				} else {
					// name & count
					return new Card(name, count);
				}
			} else {
				if(exp != null) {
					// name & exp
					return new Card(name, exp);
				} else {
					// name
					return new Card(name);
				}				
			}
		} else {
			return null;
		}
	}